gpt4 book ai didi

c++ - 带有 gmp 的代码块,带有 << 运算符和 mp*_class 的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:14 24 4
gpt4 key购买 nike

我在 Win 7 64 机器上将 CodeBlocks 与 gcc 4.7.2 和 gmp 5.0.5 结合使用。开始使用 gmpxx 后,我看到一个奇怪的段错误,它不会出现在 +、- 等运算符中,但在尝试计算 mp*_class 变量时会出现 <<。我不得不说 gmpxx 到目前为止工作得很好,除了这个。

例如:

#include <iostream>
#include <gmpxx.h>

using namespace std;

int main()
{
mpz_class c = 21;
cout << c << endl;
}

在 cout 的行上给出了一个段错误,而下面的代码工作正常:

#include <iostream>
#include <gmpxx.h>

using namespace std;

int main()
{
mpz_class a = 3, b = 8, c;
c = a + b;
cout << c.get_str() << endl;
}

更奇怪的是这段代码:

#include <iostream>
#include <gmpxx.h>

using namespace std;

int main()
{
mpz_class a = 3, b = 8, c, d = 21;
c = a + b;
cout << c.get_str() << endl;
cout << d << endl;
}

在运行时不会出现段错误,但仅显示第一个结果 (11),然后正常退出。另一方面,在调试中它会出现段错误:cout << d << endl。

我在过去几天进行了谷歌搜索,但没有发现与只有 一些 重载运算符不工作类似的内容。

如有解释,我将不胜感激。

我像这样在代码块中链接了两个 gmp 库:设置->编译器和调试器->全局编译器设置->链接器设置我在其中添加了:C:\mingw\lib\libgmpxx.dll.a 和 C:\mingw\lib\libgmp.dll.a(按此顺序)。

使用 gmpxx 编译 c++ 代码不需要其他任何东西。

最后,我的 CodeBlocks 构建日志如下所示:

g++.exe -pg -g -pg -g -c "C:\Temp\test.cpp" -o .objs\test.o

g++.exe -o test.exe .objs\test.o -pg -lgmon -pg -lgmon C:\mingw\lib\libgmpxx.dll.a C:\mingw\lib\libgmp.dll.a

老实说,我不知道为什么每个都有两个开关。

如果您需要更多信息,我很乐意提供。谢谢。

最佳答案

好的,是时候将此标记为已回答了。事实是我通过 mingw-get 安装了 gmp,而在 googleland 的几乎所有地方它都声明要为你自己的系统自己构建它。一个愚蠢的错误,感谢 @Lol4t0 的评论,它现在工作正常。所以对于所有像我这样的新人:

1) Install MinGW with MSYS

2) Download gmp source and extract to some folder in mingw\msys\1.0\home\

3) open mingw shell and navigate to gmp folder

4) ./configure --enable-cxx --prefix=/home/newgmpinstall

5) make

6) make install

7) make check

如果检查正常,那么在 newgmpinstall 中,您将找到适用于您的系统的 header gmp.h 和 gmpxx.h 以及库 libgmp.a 和 libgmpxx.a。

您可以根据需要将它们移动到新文件夹。然后在您的 IDE 项目属性中将 *.a 文件添加到您的链接库,并将包含 *.h 文件的文件夹添加到编译器搜索目录。

编写代码

注意:起初 ./configure 退出时出现关于 M4 丢失的错误,因为我缺少 M4 包。只需下载 M4 的源代码并首先对 M4 执行上述步骤,然后安装 gmp。

关于c++ - 带有 gmp 的代码块,带有 << 运算符和 mp*_class 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13276292/

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