2014-04-26 67 views
-2

我現在實現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文件中定義的功能和在PN532.cpp文件中我也包含的des.h文件,並且我相信我包含了正確的文件因爲我可以使用從該文件定義的struct

我不知道這裏有什麼問題嗎?我在谷歌上搜索,它談到了鏈接器,就像兩個文件生成不同的.o文件,並且它們應該鏈接在一起,但我不確定我是否在這種情況下

回答

2

是的,您處於這種情況。如果您有多個.c或.cpp文件的源代碼,那麼您需要編譯所有這些文件並鏈接所有生成的.o文件。

+0

我正在使用Visual Studio 2012,我該怎麼做? –

1

在連接器執行鏈接並生成可執行文件之前,您必須擁有所有的目標文件。如果你正在使用gcc,

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

將編譯所有的文件,並會做鏈接,這將導致一個名爲「executablename」最後的可執行文件。

+0

我正在使用Visual Studio 2012,我該怎麼做? –

+0

如果您的所有文件都在同一個項目下,Visual Studio會在生成項目時自動進行編譯和鏈接。 – DesirePRG

+0

有時您宣佈的功能可能尚未實施。檢查你的源代碼只是爲了確保。 – DesirePRG