在windows中构建一个我在Linux中使用GMP库的C ++项目。我正在使用预编译的静态MinGW库并包含来自此处的文件 - http://cs.nyu.edu/~exact/core/gmp/index.html
一切似乎进展顺利(mpz_init,mpz_mul等),除非我到达mpz_powm_sec()。
mpz_powm_sec(m, c, d, n);
该行给出:
error: 'mpz_powm_sec' was not declared in this scope
然而,我对GMP的其他提及都没有。有谁知道为什么会发生这种情况以及我可以做些什么来使其编译?
答案 0 :(得分:1)
GMP的官方网站是https://gmplib.org/。您从该第三方网站下载的版本已超过12年,从那时起该库已经发展了很多。
答案 1 :(得分:1)
尽管https://gmplib.org有官方GMP网站,但与MinGW.org的编译器工具链一起使用的预编译二进制文件的规范来源是https://sourceforge.net/projects/mingw/files/的SourceForge存储库;最新的GMP MinGW版本为https://sourceforge.net/projects/mingw/files/MinGW/Base/gmp/gmp-5.1.2/,(对于标题和导入库,您需要" -dev"包,对于运行时绑定,可能需要" -dll" )。
如果您使用由MinGW开发人员自己准备的二进制文件,它们将与MinGW一起进行测试;如果您抓住第三方构建版本,它们可能会过时,可能无法正常工作,并且您自己就可以了。