我試圖使用實現Paillier加密的this庫,並在Xcode中使用GMP庫。C C++在Xcode中建立鏈接器錯誤
要做到這一點,我下載了兩個庫併成功構建它們。然後,我在Xcode的項目設置中將「usr/local/include」添加到「標題搜索路徑」和「/ usr/local/lib」到「庫搜索路徑」中。我還爲「其他鏈接器標誌」添加了「-lgmp」和「-lpaillier」。
我可以毫無問題地包含「gmp.h」和「paillier.h」,我也可以使用gmp功能。但是如果我嘗試使用paillier功能,則會出現構建錯誤。
Undefined symbols for architecture x86_64:
"paillier_keygen(int, paillier_pubkey_t**, paillier_prvkey_t**, void (*)(void*, int))", referenced from:
DOwner::run() in downer.o
"paillier_get_rand_devrandom(void*, int)", referenced from:
DOwner::run() in downer.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我試圖通過谷歌找到這個問題的解決方案,但沒有發現工作。
UPDATE
我換旗 「-lpaillier」 到 「-l:libpaillier.a」 並收到以下錯誤:
ld: library not found for -l:libpaillier.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)
這很奇怪,因爲文件「libpaillier。一個「在/ usr/local/lib中,並帶有」libgmp.a「,所以它怎麼能找到gmp文件,但不是這個。要檢查Xcode是否在另一個目錄中搜索,我運行sudo find/-name "libgmp.a"
以查看Xcode可能正在使用的其他任何實例,但在/ usr/local/lib中只有一個實例。
UPDATE
爲了確保Xcode的鏈接,我去了「構建階段」庫>「鏈接的二進制,庫」,並拖累文件「libpaillier.a」給它。但錯誤仍然存在。
UPDATE
我複製了構成整個源代碼到我的項目文件夾中的paillier.h和paillier.c文件。然後我將paillier.c鏈接到我的目標項目。問題依然存在。但是,當我將這些文件重命名爲paillier.hpp和paillier.cpp,因爲我的項目是一個cpp項目,問題就解決了。但是,我得到另一個錯誤,說它有非法使用該庫使用的void指針算術。有沒有辦法讓Xcode中的void指針算術?
我試過,但我收到'未定義的符號爲架構i386'所以我不認爲這是問題 – user1546022