在学校电脑上运行GMP程序

Run program with GMP on school computer

本文关键字:GMP 程序 运行 学校 电脑      更新时间:2023-10-16

我想在学校运行一个使用GMP库编写的程序,但我需要你的帮助才能实现。这个程序本身还可以,但我不知道如何正确地包括GMP。我使用的是Netbeans IDE和cygwin,程序是用c++编写的。有人能告诉我如何做到这一点吗?有很多事情我不确定,例如:

  • 我需要专门为那台计算机编译吗
  • 操作系统重要吗

如果这个问题已经在某个地方得到了回答,我很抱歉。我在谷歌上搜索了很长一段时间,但似乎什么都找不到,甚至连GMP本身的例子都没有。

提前感谢!

编辑:

我真的不知道该怎么联系。程序立即崩溃并转储堆栈。上面写着:异常:STATUS_ILLEGAL_INSTRUCTION。在文件夹中,我有cyggcc_s-seh-1.dll、cyggmp-10.dll、cygstdc++=6.dll、cygwin1.dll、exe、gmpxx.h、libgmp.a、libgmp.la、libgmp-lai、libgmplibcmd、libgmpxx.a、libgm pxx.la、libgm p xx.lai、main.cpp、main.o、main.o.d、.dep.inc以及我的程序所需的一些文件和文件夹。

我已经包含了gmp和gmpxx,当我构建它时,它给出了:

"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory '/cygdrive/e/Documents/NetBeansProjects/GeneticPrimesFast'
"/usr/bin/make"  -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin_4.x-Windows/geneticprimesfast.exe
make[2]: Entering directory '/cygdrive/e/Documents/NetBeansProjects/GeneticPrimesFast'
mkdir -p build/Debug/Cygwin_4.x-Windows
rm -f "build/Debug/Cygwin_4.x-Windows/main.o.d"
g++    -c -g -Werror -I../../GMP/gmp-6.0.0 -std=c++11 -MMD -MP -MF "build/Debug/Cygwin_4.x-Windows/main.o.d" -o build/Debug/Cygwin_4.x-Windows/main.o main.cpp
mkdir -p dist/Debug/Cygwin_4.x-Windows
g++     -o dist/Debug/Cygwin_4.x-Windows/geneticprimesfast build/Debug/Cygwin_4.x-Windows/main.o -lgmpxx -lgmp
make[2]: Leaving directory '/cygdrive/e/Documents/NetBeansProjects/GeneticPrimesFast'
make[1]: Leaving directory '/cygdrive/e/Documents/NetBeansProjects/GeneticPrimesFast'
BUILD SUCCESSFUL (total time: 2s)

我现在压力很大,因为我明天需要这个。任何帮助都将不胜感激!

编辑2:

我得出的结论是,n.m.可能是对的:这与代码有关。导致非法指令的典型原因是什么?

编辑3:

谢谢你的帮助!我发现它与gmp中的get_str命令有关(可能还有get_d)。有人知道在没有这个函数的情况下获取字符串的另一种方法吗?或者我用错了吗?

编辑4:

mpf_set_d也不起作用。这对项目来说至关重要。有人知道如何解决这个问题吗?或者我哪里出了问题?也许是开发工具,我该如何检查?

最有可能的罪魁祸首是某个地方的缓冲区/数组溢出,从而覆盖某个位置的函数或返回指针。稍后通过损坏指针的返回或调用会跳转到某个可执行但不包含有效指令的内存区域,这可能是因为它是数据,也可能是因为您跳到了多字节指令的中间。

如果您使用的是linux,我建议您使用valgrind来跟踪内存损坏。Windows上一定存在类似的工具。