在Xcode 4中使用GMP - 链接问题

时间:2011-06-24 10:22:18

标签: xcode4 gmp

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

我查看了StackOverflow帖子中的评论:Adding Linker Flags in 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;
}

5 个答案:

答案 0 :(得分:2)

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

右键单击Xco​​de 组和文件列表中的目标,然后从上下文菜单中选择获取信息。在构建标签中,在搜索字段中输入linker,然后找到其他链接标记项。

双击其他链接标记项并添加-lgmp

答案 1 :(得分:1)

一些想法:

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

答案 2 :(得分:0)

您的GMP图书馆是如何编制的?它是否只为任何机会编译为32位架构?如果是这样,您将无法在64位项目中使用它;你必须将-arch i386添加到编译器标志列表中,以使XCode创建一个32位可执行文件。

答案 3 :(得分:0)

你应该这样做:

  1. 项目
  2. 构建阶段
  3. 使用图书馆链接二进制文件
  4. 点击“+”选择你自己的gmp库,比如/opt/local/lib/libgmp.10.dylib(ps:我用macport来编译GMP)。

答案 4 :(得分:-1)

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