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