3

我正在尝试在 Xcode 4.0.2 的演示 C++ 项目中使用 GMP 5.0.2 库,但无法使链接正常工作。

我查看了 StackOverflow 帖子中的评论:在 Xcode 中添加链接器标志,在 /usr/local/lib 和 /usr/local/include 中找到了 GMP 库和头文件,并将它们拖到项目目标中。这允许项目编译,但显然不能链接。我得到的错误是

    Undefined symbols for architecture x86_64:
  "operator>>(std::istream&, __mpz_struct*)", referenced from:
      _main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

关于我接下来应该尝试什么的任何建议?谢谢。

#include <iostream>
#include "gmp.h"
#include <stdio.h>

using namespace std;

int main (int argc, const char * argv[])
{

    mpz_t x;
    mpz_init(x);
    cin >> x;
    cout << "x = " << endl;

    // insert code here...
    std::cout << "Hello, World!\n";
    return 0;
}
4

5 回答 5

2

要使用 GMP 运行程序,请记住将-lgmp标志添加到链接器,如下所示:(通过Rob Keniger):

右键单击 Xcode Groups and Files列表中的目标,然后从上下文菜单中选择Get Info 。Build选项卡中,键入linker搜索字段,然后找到Other Linker Flags项。

双击Other Linker Flags项并添加-lgmp.

于 2012-03-03T22:34:56.527 回答
1

几个想法:

1)正如 nes 所说,请务必将 -lgmp 标志添加到您的链接器调用中。2)尝试包含“gmpxx.h”并将 -lgmpxx -lgmp 添加到链接器。(顺序可能很重要!)直接的 C 代码不应该是必需的......理论上......但对我来说,这些看起来更像是 C++ 错误。3) 考虑 MPIR 库。它与 GMP 相同,但具有更 Windows 友好的世界观。4) 检查手册 - 有时还有其他您需要的特定功能。

于 2013-07-09T23:20:07.197 回答
0

您的 GMP 库是如何编译的?是否只是偶然为 32 位架构编译的?如果是这样,您将无法在 64 位项目中使用它;您必须添加-arch i386到编译器标志列表中才能使 XCode 创建 32 位可执行文件。

于 2011-06-24T10:30:30.300 回答
0

你应该这样做:

  1. 项目
  2. 构建阶段
  3. 将二进制文件与库链接
  4. 点击“+”选择你自己的gmp库,比如/opt/local/lib/libgmp.10.dylib(ps:我用macport编译GMP)。
于 2012-01-22T15:45:50.120 回答
-1

如果您不需要 GMP 的所有功能,您应该能够简单地将mini-gmp.hmini-gmp.m文件拖放到您的项目中并开始使用该库的基本功能。

于 2013-10-22T16:29:22.400 回答