我在 C++ 中使用 mpir 库时遇到问题。是否可以从函数返回 mpz_t 值?当我尝试这样做时,出现以下错误:
RSA.cpp:50:36: error: ‘HASHtemp’ declared as function returning an array
mpz_t RSA::HASHtemp( mpz_t message )
Run Code Online (Sandbox Code Playgroud) 我正在尝试编译 MPIR(GMP 的 Windows 友好版本)。我安装了 Visual Studio 2017,所以它应该可以工作,但我收到以下错误消息:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: The Windows SDK version 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution". [C:\mpir\msvc\vs17\lib_mpir_gc\lib_mpir_gc.vcxproj]
我特别需要达到可以在任何机器上编译的程度,而不仅仅是这台机器,所以在这台机器上安装那个确切的 SDK 版本并不能解决问题。我需要更改一些内容才能使用 Visual Studio 2017 进行构建。
看着C:\mpir\msvc\vs17\lib_mpir_gc\lib_mpir_gc.vcxproj,我找到了这一行:
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
这看起来很有希望,但删除它没有任何效果;错误信息保持不变。
我可以更改什么来消除此错误?
总结一下我相信这应该是可能的原因:
如果您编写 C++ 程序,例如在最简单的情况下,在名为 的单个文件中foo.cpp,并使用命令行编译器编译cl foo.cpp 它,它将自动编译并链接当前 Visual Studio 安装使用的任何 SDK 版本以生成foo.exe该程序(除非您使用了一些仅在更高版本的 …
编辑:我正在使用应用商店中的 Win 10 和 Ubuntu
我尝试使用以下方法安装 gmpy2:
apt-get install libgmp-dev
apt-get install libmpfr-dev
apt-get install libmpc-dev
Run Code Online (Sandbox Code Playgroud)
并且还下载了 MPIR 并编译了它。但是使用pip install gmpy2仍然给我错误
c:\users\gypsyzz\appdata\local\temp\pip-install-l2hlf7q4\gmpy2\src\gmpy.h(104): fatal error C1083: Cannot open include file: 'mpir.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\BuildTools\\VC\\Tools\\MSVC\\14.13.26128\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
Run Code Online (Sandbox Code Playgroud)
此外,我发现使用https://www.lfd.uci.edu/~gohlke/pythonlibs/上的预建轮子并没有给我任何功能。
import gmpy2
from gmpy2 import mpz,mpq,mpfr,mpc
gmpy2.conjugate(mpc())
Traceback (most recent call last):
File "<ipython-input-18-2d51a42bda9a>", line 1, in <module>
gmpy2.conjugate(mpc())
AttributeError: module 'gmpy2' has no attribute 'conjugate'
Run Code Online (Sandbox Code Playgroud)
我更确定我对最后一部分的函数理解有误,所以请告诉我正确的语法。
在过去的三天里,我一直在尝试在 Windows 7 上使用 VS2017 构建库,以下是我能想到的:
如果您在 Windows 7 64 位上使用 Visual Studio 2017 时遇到 MPIR 问题。您可以按照以下步骤操作。如果您使用的是 Windows 8 或 10,它可能与 Windows 目录略有不同,但概念应该仍然相同。您仍然可以使用它作为指南,只需对目录设置进行少量修改即可。
注意: - 这是直接针对 x64