我正在尝试编译 MPIR(适用于 Windows 的 GMP 版本)。我安装了 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
.您使用了一些仅在更高版本的 Windows 中可用的非常专业的 API)在至少从 Vista 开始的任何 Windows 上运行。cl foo.cpp
foo.exe
cl.exe
这与msbuild 调用的完全相同。所以我不是要求新功能。相反,之所以会生成上述错误消息,是因为某些东西不合时宜地破坏了默认的“它只是工作”场景并将锁定添加到特定的 SDK 版本。我在问如何移除锁并返回到默认场景,它只适用于 Visual Studio 附带的任何 SDK 版本。