我正在尝试在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;
}
答案 0 :(得分:2)
要使用GMP运行程序,请记住将-lgmp
标志添加到链接器,如下所示:(通过Rob Keniger):
右键单击Xcode 组和文件列表中的目标,然后从上下文菜单中选择获取信息。在构建标签中,在搜索字段中输入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)
你应该这样做:
答案 4 :(得分:-1)
如果您不需要GMP的所有功能,您应该只需将mini-gmp.h
和mini-gmp.m
文件拖放到项目中即可开始使用库的基本功能