IAR调试报错Undefined external “XXXX“ referred in main
第一种情况:项目中只导入了.h文件,但是对应的.C文件没有导入进去。
如下图,只有一个sensor.h文件,sensor.c文件编辑好后没有导入进去.
导入sensor.c文件后,就没有报错了.
第二种情况:报错内容中包含自定义的结构体名称
这种报错是因为在.h文件中声明了结构体,并且直接进行了赋值导致的。
举例:以下结构体进行了赋值,所以不能直接写入.h文件:
struct _strTime{
uint8 yms[11];//年月日
uint8 hms[9];//时分秒
}strTime={"2020/08/30","12:09:00"};
解决方法:
将上述结构体移动到.c文件中,
然后在.h文件中做如下声明即可:
extern struct _time time;
第三重情况:报错内容包含mcu自带的宏定义名称
第三种情况调试时会有非常多的报错,问题根源是头文件版本不兼容当前的IAR版本。
解决方法:
1.使用对应版本的IAR,IAR常见版本是V5.1和V7.12.1;
2.。需修改头文件。如io430.h(V5.1)改为msp430x14x.h(V7.12.1)。这个操作比较麻烦,务必检查项目中所有的.c和.h文件,确保全部修改完成。
———————————————————END———————————————————-
以上为个人总结的经验.如果本片文章对您有所帮助,欢迎
点赞
收藏
留言
!
版权声明:本文为dorlolo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。