gpt4 book ai didi

c++ - Xcode 中的 C\C++ 构建链接器错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:45:20 26 4
gpt4 key购买 nike

我正在尝试使用 this实现 Paillier 加密并使用 GMP 的库Xcode 中的库。

为此,我下载了这两个库并成功构建了它们。然后我在 Xcode 的项目设置中将“usr/local/include”添加到“Header Search Paths”和“/usr/local/lib”到“Library Search Paths”。我还在“其他链接器标志”中添加了“-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)

我试图通过谷歌找到解决这个问题的方法,但没有找到任何有效的方法。

更新

我将标志“-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.a”和“libgmp.a”在/usr/local/lib 中,所以它怎么能找到 gmp 文件而不是这个文件。为了检查 Xcode 是否在不同的目录中搜索,我运行了 sudo find/-name "libgmp.a" 以查看是否有 Xcode 可能正在使用的任何其他实例,但只有一个在/usr/local/lib 中。

更新

为了确保 Xcode 链接到库,我转到“Build Phases”>“Link Binary With Library”并将文件“libpaillier.a”拖到它。但错误仍然存​​在。

更新

我将构成整个源代码的paillier.h 和paillier.c 文件复制到我的项目文件夹中。然后我将 paillier.c 链接到我的目标项目。问题仍然存在。但是当我将文件重命名为 paillier.hpp 和 paillier.cpp 时,因为我的项目是 cpp 项目,问题就解决了。但是,我收到另一个错误,指出库使用的 void 指针算法是非法的。有没有办法在 Xcode 中允许空指针运算?

最佳答案

从第一个错误来看,很可能您正在构建 32 位库(我猜您有一些用于构建库的 makefile)和 64 位应用程序,因此链接器找到了库,但没有找到为您的预期架构实现。

因此请检查应用程序在 Xcode 中的项目设置,并将其更改为 32 位。或者查看是否有构建 64 位库的构建说明。

关于c++ - Xcode 中的 C\C++ 构建链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39890853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com