未定义的对用户定义函数的引用

时间:2014-04-26 15:51:19

标签: c++ c linker arduino undefined-reference

我现在正在实施3DES,我得到了这样的错误:
日志:

  

Compiling 'ReadTag_new' for 'Arduino Uno PN532.cpp.o:In function PN532::example()' PN532.cpp:undefined reference to des3_set2key_dec' PN532.cpp:undefined reference to des3_set2key_enc' PN532.cpp:undefined reference to des3_crypt_cbc Error creating .elf

其中des3_set2key_decdes3_set2key_encdes3_cypt_cbc是在des.c文件中实现并在des.h文件和{{1}中定义的函数我还包含PN532.cpp文件,我确信我包含了正确的文件,因为我可以使用从该文件中定义的des.h

我不知道这里有什么问题?我在谷歌上搜索并谈论链接器,就像两个文件生成不同的struct文件一样,它们应该链接在一起,但我不确定我是那种情况

2 个答案:

答案 0 :(得分:2)

是的,你处于那种情况。如果您有多个.c或.cpp文件中的源,那么您需要编译所有这些文件并链接所有生成的.o文件。

答案 1 :(得分:1)

在链接器进行链接并生成可执行文件之前,必须拥有所有目标文件。如果您使用的是gcc,

gcc -o executablename filename1.c filename2.c filename3.c 

将编译所有文件并进行链接,这将生成名为“executablename”的最终可执行文件。