IAR编译错误,Error[Li005]: no definition for "__iar_system_Mtxlock" 30
Error[Li005]:nodefinitionfor"__iar_system_Mtxlock"[referencedfromxsyslock_mtx.o(dl7M_...
Error[Li005]: no definition for "__iar_system_Mtxlock" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_file_Mtxinit" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_system_Mtxinit" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_file_Mtxdst" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_system_Mtxdst" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_system_Mtxunlock" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
有谁碰到过这个情况, 展开
Error[Li005]: no definition for "__iar_file_Mtxinit" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_system_Mtxinit" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_file_Mtxdst" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_system_Mtxdst" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
Error[Li005]: no definition for "__iar_system_Mtxunlock" [referenced from xsyslock_mtx.o(dl7M_tlf.a)]
有谁碰到过这个情况, 展开
6个回答
展开全部
在uart.h中定义了一个结构体类型。
struct SERIREC{
unsigned char flag;
unsigned char Crc8_Code;
unsigned Crc16_Code;
unsigned char usedmes[7];
unsigned char i;
};extern struct SERIREC PC ; //然后再这里声明它。
在uart.c中定义PC这个结构体的实体。。
struct SERIREC PC ; // 不定义这个,就会报 no definition
编译链接错误(语法错误):编译链接错误又分成编译错和链接错。
编译错就是普通意义上的语法错,编译器进行语法检查不通过,也就是程序违背了计算机语言的语法,例如:括号不匹配、变量名拼写错误、用保留字定义变量名等;
链接错是指程序通过了语法检查,但是无法生成可执行文件,最常见的是链接找不到lib库。初学者有时写了函数的声明,但是缺少函数的定义,此时就会出现链接错。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其他几个回答都是胡扯的。
http://supp.iar.com/FilesPublic/UPDINFO/005691/arm/doc/infocenter/DLIBThreadSupport.html
看IAR官方文档,这是因为你启用了c/c++标准库的多线程支持。(Enable thread support in library)
既然有多线程支持,那就有上锁和解锁的问题了,你需要自己实现以下函数,让iar知道怎么调用你的系统中的锁功能(mutex)
void __iar_system_Mtxinit(__iar_Rmtx *); // Initialize a system lock
void __iar_system_Mtxdst(__iar_Rmtx *); // Destroy a system lock
void __iar_system_Mtxlock(__iar_Rmtx *); // Lock a system lock
void __iar_system_Mtxunlock(__iar_Rmtx *); // Unlock a system lock
----------------------
void __iar_file_Mtxinit(__iar_Rmtx *); // Initialize a file lock
void __iar_file_Mtxdst(__iar_Rmtx *); // Destroy a file lock
void __iar_file_Mtxlock(__iar_Rmtx *); // Lock a file lock
void __iar_file_Mtxunlock(__iar_Rmtx *); // Unlock a file lock
http://supp.iar.com/FilesPublic/UPDINFO/005691/arm/doc/infocenter/DLIBThreadSupport.html
看IAR官方文档,这是因为你启用了c/c++标准库的多线程支持。(Enable thread support in library)
既然有多线程支持,那就有上锁和解锁的问题了,你需要自己实现以下函数,让iar知道怎么调用你的系统中的锁功能(mutex)
void __iar_system_Mtxinit(__iar_Rmtx *); // Initialize a system lock
void __iar_system_Mtxdst(__iar_Rmtx *); // Destroy a system lock
void __iar_system_Mtxlock(__iar_Rmtx *); // Lock a system lock
void __iar_system_Mtxunlock(__iar_Rmtx *); // Unlock a system lock
----------------------
void __iar_file_Mtxinit(__iar_Rmtx *); // Initialize a file lock
void __iar_file_Mtxdst(__iar_Rmtx *); // Destroy a file lock
void __iar_file_Mtxlock(__iar_Rmtx *); // Lock a file lock
void __iar_file_Mtxunlock(__iar_Rmtx *); // Unlock a file lock
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很明显,未定义,xsyslock_mtx.c中未定义这些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注这个问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询