我已经为MinGW构建了GMP。我使用的IDE是Code::Blocks。对于GMP的C函数,我没有任何问题。但是我在C++方面遇到了问题。我尝试运行的程序非常简单,如下所示:
#include<iostream>
#include<gmpxx.h>
using namespace std;
main()
{
mpz_class a;
a=12345;
cout<<"value"<<a<<"\n";
return 0;
}
我收到的错误信息如下:
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osmpz.o):osmpz.cc|| undefined reference to `__gmpz_get_str'|
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osfuns.o):osfuns.cc:(.rdata+0x1c)||undefined reference to `__gmp_asprintf_memory'|
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osfuns.o):osfuns.cc:(.rdata+0x20)||undefined reference to `__gmp_asprintf_reps'|
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osdoprnti.o):osdoprnti.cc|| undefined reference to `__gmp_doprnt_integer'|
F:\Compilers\C_Libraries\GMP\lib\libgmpxx.a(osdoprnti.o):osdoprnti.cc|| undefined reference to `__gmp_asprintf_final'|
||=== Build finished: 5 errors, 0 warnings ===|
现在,还有一些额外的数据:
- 我对C函数没有任何问题。如果我删除cout <<语句,文件可以编译并正常运行。问题可能出现在重载运算符上。
- libgmpxx.a和libgmp.a已经与编译器链接。这也可以在错误信息中看到...
- 问题可能仅出现在libgmpxx.a中。因此,我再次构建了库,但文件仍然相同。
- 我使用了这个教程,在MSYS for MinGW上构建GMP。http://www.cs.nyu.edu/exact/core/gmp/ and http://suchideas.com/journal/2007/07/installing-gmp-on-windows/
- 我正在使用的GMP版本是5.0.4。