IAR Embedded Workbench:为什么我会收到链接器错误 [Li005]?
IAR Embedded Workbench: Why am I getting linker Error [Li005]?
我已将新的 mycode.c 和 mycode.h 文件添加到我的 IAR Embedded Workbench 项目中。文件编译没有错误,但链接器失败并显示消息:
Error[Li005]: no definition for "myfun()" [referenced from C:\MyProj\Debug\Obj\main.o]
(为保护无辜者更改了一些名称。)
我检查了 .map 文件,myfun()
没有出现在那里。知道为什么 myfun()
没有链接吗?
您的项目是否有可能是混合 C/C++ 项目?如果是这样,您需要在 .h 文件中包含以下 extern "C" { ... }
结构(具有明显的名称更改...):
// file: mycode.h
#ifndef MYCODE_H
#define MYCODE_H
#ifdef __cplusplus
extern "C" {
#endif
// your declarations go here...
void myfun();
#ifdef __cplusplus
}
#endif
#endif // #ifndef MYCODE_H
我已将新的 mycode.c 和 mycode.h 文件添加到我的 IAR Embedded Workbench 项目中。文件编译没有错误,但链接器失败并显示消息:
Error[Li005]: no definition for "myfun()" [referenced from C:\MyProj\Debug\Obj\main.o]
(为保护无辜者更改了一些名称。)
我检查了 .map 文件,myfun()
没有出现在那里。知道为什么 myfun()
没有链接吗?
您的项目是否有可能是混合 C/C++ 项目?如果是这样,您需要在 .h 文件中包含以下 extern "C" { ... }
结构(具有明显的名称更改...):
// file: mycode.h
#ifndef MYCODE_H
#define MYCODE_H
#ifdef __cplusplus
extern "C" {
#endif
// your declarations go here...
void myfun();
#ifdef __cplusplus
}
#endif
#endif // #ifndef MYCODE_H