我确实使用Eclipse Photon(4.8.0)设置了一个C项目来为ESP-32开发程序。我确实根据this official setup instructions配置了IDE。
刷新ESP-32可以正常工作。但是,一旦我尝试从子文件夹中包含头文件,就会遇到麻烦。我已经建立了一个非常简单的项目来说明这个问题。该项目由main.c
,base/test.h
和base/test.c
组成,而test.h
和test.c
文件仅包含一个签名为void function1(void);
的函数。 / p>
当我尝试在function1()
中呼叫main.c
时,我在main.c
中收到此错误:
对function1()的未定义引用
请与随附的屏幕截图进行比较,其中描述了所有内容。
如何解决此问题?
答案 0 :(得分:2)
这不是编译器,而是链接器错误。
请注意,使用#include
处理头文件时,仅会使编译器知道外部函数。在链接阶段,还需要 link 到外部函数。确保在链接中包含包含function1
的编译目标文件。
答案 1 :(得分:1)
似乎您需要进行正确的链接。
如果要链接到库,则需要指定:
Project\Settings\C C++ General\Paths and Symbols\Libraries
Project\Settings\C C++ General\Paths and Symbols\Library Paths
如果要链接目标文件,请将其添加到:
Project\Settings\C C++ Build\Settings\Linker\Miscellaneous\Other objects
注释1 :
例如,如果您的库名称为libsomething.a
,则只需指定something
作为名称;因此省略lib
前缀和.a
后缀。如果您的库没有以lib
为前缀,那么您需要添加以:
为前缀的名称,例如:something.a
应该添加为:something.a
。