OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4467|回复: 32

学习EMWIN 编译不成功想放弃了。。。。

[复制链接]

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
发表于 2020-7-29 16:44:47 | 显示全部楼层 |阅读模式
1金钱
学习EMWIN 编译不成功想放弃了,怎么也想不明白GUI_Type.h 这个文件会编译不过。。。。
有一大堆的没定义,但是也经关联了,谁遇到过没?都定义了,为什么啊?
金.jpg
金.jpg
金.jpg

最佳答案

查看完整内容[请看2#楼]

不知道Lz自己解决了没有,这个问题还有点意思,我一开始也以为就是没有包含头文件,后来发现工程定义了,也包含了头文件,而且用Go To Define 也能定位到定义处,最后问题就出在于你头文件的宏定义: 修改为: 改为以后: "EYES750VB_S\EYES750VB_S.axf" - 0 Error(s), 5 Warning(s). 原因是,你的工程有定一个 LCD_H 宏定义,到时这个头文件就不被包含进来了,所以你头文件的定义都无效了。 一般的,头文件避免被 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-7-29 16:44:48 | 显示全部楼层
不知道Lz自己解决了没有,这个问题还有点意思,我一开始也以为就是没有包含头文件,后来发现工程定义了,也包含了头文件,而且用Go To Define 也能定位到定义处,最后问题就出在于你头文件的宏定义:
#ifndef LCD_H
#define LCD_H

修改为:
#ifndef LCD_H__
#define LCD_H__


改为以后:
"EYES750VB_S\EYES750VB_S.axf" - 0 Error(s), 5 Warning(s).

原因是,你的工程有定一个 LCD_H 宏定义,到时这个头文件就不被包含进来了,所以你头文件的定义都无效了。

一般的,头文件避免被多重包含,会使用一个宏定义,STM32这个宏定义一般是2个下划线开头,这样就避免和用户的定义重叠了,像你这样 LCD_H 就很容易出现这种问题。

#ifndef __gpio_H
#define __gpio_H
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-7-30 02:57:55 | 显示全部楼层
没有定义很好解决啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-7-30 03:49:30 | 显示全部楼层
上工程
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-7-30 16:02:07 | 显示全部楼层
放弃这行吧
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-7-31 14:49:36 | 显示全部楼层

工程太大了,超出了限制
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-7-31 14:50:20 | 显示全部楼层

靠这吃饭啊,要不你养我啊?
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-7-31 15:12:57 | 显示全部楼层
人家报错说LCD_COLOR的定义未找到,那就搜索在那个头文件定义的,如果没有就自己定义下。从你贴的几张图没看出来是哪个头文件定义的
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-7-31 15:37:16 | 显示全部楼层
a5820736 发表于 2020-7-31 15:12
人家报错说LCD_COLOR的定义未找到,那就搜索在那个头文件定义的,如果没有就自己定义下。从你贴的几张图没 ...

#ifndef LCD_H
#define LCD_H

#include "GUI_ConfDefaults.h" /* Used for GUI_CONST_STORAGE */
#include "Global.h"

#if defined(__cplusplus)
extern "C" {     /* Make sure we have C-declarations in C++ programs */
#endif

/*********************************************************************
*
*       Basic type defines
*
* The follwing are defines for types used in the LCD-driver and the
* GUI layers on top of that. Since "C" does not provide data types of
* fixed length which are identical on all platforms, this is done here.
* For most 16/32 controllers, the settings will work fine. However, if
* you have similar defines in other sections of your program, you might
* want to change or relocate these defines, e.g. in a TYPE.h file.
*/
#define I16P I16              /*   signed 16 bits OR MORE ! */
#define U16P U16              /* unsigned 16 bits OR MORE ! */

/*********************************************************************
*
*       Settings for windows simulation
*
* Some settings in the configuration may conflict with the values required
* in the Simulation. This is why we ignore the target settings for data
* types and use the correct settings for the simulation.
* (U32 could be defined as long, which would yield a 64 bit type on
* the PC)
*/
#ifdef WIN32
  #pragma warning( disable : 4244 )  // Disable warning messages in simulation
  #pragma warning( disable : 4761 )  // Disable warning "integral size mismatch in argument; conversion supplied"
#endif

/*********************************************************************
*
*       Constants
*/
#define LCD_ERR0 (0x10)
#define LCD_ERR_CONTROLLER_NOT_FOUND (LCD_ERR0+1)
#define LCD_ERR_MEMORY               (LCD_ERR0+2)

/*********************************************************************
*
*       Drawing modes
*/
#define LCD_DRAWMODE_NORMAL (0)
#define LCD_DRAWMODE_XOR    (1<<0)
#define LCD_DRAWMODE_TRANS  (1<<1)
#define LCD_DRAWMODE_REV    (1<<2)

/*********************************************************************
*
*       Typedefs
*/
typedef int LCD_DRAWMODE;
typedef U32 LCD_COLOR;
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-7-31 15:38:05 | 显示全部楼层
philing 发表于 2020-7-31 15:37
#ifndef LCD_H
#define LCD_H

LCD.H 有这个typedef U32 LCD_COLOR;
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-7-31 15:39:32 | 显示全部楼层
"Global.h"内容如下

#ifndef   U8
  #define U8  unsigned char
#endif
#ifndef   U16
  #define U16 unsigned short
#endif
#ifndef   U32
  #define U32 unsigned long
#endif
#ifndef   I8
  #define I8  signed char
#endif
#ifndef   I16
  #define I16 signed short
#endif
#ifndef   I32
  #define I32 signed long
#endif

#endif                      // Avoid multiple inclusion
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-7-31 15:41:35 | 显示全部楼层
知道在哪个头文件就好办了,在这个文件里随便写点东西,让它报错,编译看有没有编译到这个头文件
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-7-31 15:48:23 | 显示全部楼层
a5820736 发表于 2020-7-31 15:41
知道在哪个头文件就好办了,在这个文件里随便写点东西,让它报错,编译看有没有编译到这个头文件

乱写一个字符,看到编译到了,马上会增多100多错误。
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-7-31 15:55:39 | 显示全部楼层
有报错这个问题就不知道了,简单方法直接把LCD相关的typedef照抄,不用它。
可以把几个相关文件传上来看看
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-7-31 15:57:24 | 显示全部楼层
错误在GUI_Type.h, 一大堆说没定义,比如
../EMWIN/emWin/Include/GUI_Type.h(70): error:  #20: identifier "LCD_COLOR" is undefined
typedef LCD_COLOR       GUI_COLOR;
在 LCD.h 可以找到 typedef U32 LCD_COLOR;
在Global.h又能找到
#ifndef   U32
  #define U32 unsigned long
#endif

真的是不懂了
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-7-31 16:00:18 | 显示全部楼层
直接 typedef U32 GUI_COLOR这种试试
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-7-31 16:03:04 | 显示全部楼层
还有可以看看.i或.d文件,看看预编译展开的文件对不对
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-7-31 16:09:16 | 显示全部楼层
a5820736 发表于 2020-7-31 16:00
直接 typedef U32 GUI_COLOR这种试试

typedef U32 GUI_COLOR,这样是没有问题的,可以编译过
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-7-31 16:30:23 | 显示全部楼层
philing 发表于 2020-7-31 14:49
工程太大了,超出了限制

可以百度云盘
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-8-3 09:02:12 | 显示全部楼层
philing 发表于 2020-7-31 14:50
靠这吃饭啊,要不你养我啊?

都告诉你没有定义了,问题很简单,自己克服一下
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2020-8-3 09:14:01 | 显示全部楼层
先从最简单的去做。当时刚学单片机,先做40个小实验。学stm先手动打印输出个hello
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-8-4 16:27:30 | 显示全部楼层
工程链接:https://pan.baidu.com/s/1NbwXhPmX5-GuSdlV6k0fng
提取码:zbu4
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-8-4 16:28:02 | 显示全部楼层
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-8-5 09:49:12 | 显示全部楼层

怎么百度网盘 连接都不让发?
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-8-5 09:49:47 | 显示全部楼层
正点原子 发表于 2020-7-30 02:57
没有定义很好解决啊

怎么百度网盘 连接都不让发?
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-8-5 20:45:16 | 显示全部楼层
philing 发表于 2020-8-5 09:49
怎么百度网盘 连接都不让发?

我前几天都发过啊
回复

使用道具 举报

5

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
777
金钱
777
注册时间
2016-7-15
在线时间
119 小时
发表于 2020-8-6 14:43:16 | 显示全部楼层
想靠这个吃饭,可不能什么问题都问别人哦,自己解决,能力就增加了
好好学习,天天向上。
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-8-7 10:15:53 | 显示全部楼层
弦子的弦 发表于 2020-8-7 00:51
不知道Lz自己解决了没有,这个问题还有点意思,我一开始也以为就是没有包含头文件,后来发现工程定义了,也 ...

我感觉不像,因为他在那个头文件里特意改了错,会爆出其他错误,说明这个头文件是被包含展开的。
至于加不加__,这个是看个人风格了,反正我前后都加。。。
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-8-7 10:54:40 | 显示全部楼层
弦子的弦 发表于 2020-8-7 00:51
不知道Lz自己解决了没有,这个问题还有点意思,我一开始也以为就是没有包含头文件,后来发现工程定义了,也 ...

好吧,下了他的代码一搜还真是这个问题,那我之前让他改头文件为什么会报错。。。
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-8-7 14:01:43 | 显示全部楼层
a5820736 发表于 2020-8-7 10:54
好吧,下了他的代码一搜还真是这个问题,那我之前让他改头文件为什么会报错。。。

我的理解是,如果没有 宏定义 LED_H 的.c 文件包含了这个头文件,那么这个头文件就会被包含进来,所以头文件如果有错,还是会报错的。而原先的错误,错误是因为那个.c文件定义LE D_H,而恰恰又需要包含这个头文件。
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-8-12 09:38:15 | 显示全部楼层
LCD.h 这个文件都是EMWIN 自带的,没想到会是有这种问题。学习了,太感谢您了!
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-8-3
在线时间
18 小时
 楼主| 发表于 2020-8-12 10:22:50 | 显示全部楼层
小程序员 发表于 2020-8-6 14:43
想靠这个吃饭,可不能什么问题都问别人哦,自己解决,能力就增加了

有时候遇到一个问题,就卡在那,无法前进,很烦
回复

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2014-7-2
在线时间
17 小时
发表于 2020-8-13 12:16:19 | 显示全部楼层
感觉移植stemwin要比keil emwin麻烦,也有可能是我功力不够
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 21:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表