在我的VS 2017 RC (它有Platform Toolset v.141)项目中,我特别添加了两个包- GLEW和GLFW。我成功地包含了相应的头文件,但无法链接我的项目--很明显,这些包不是为VS 2017构建的。
在packages/<package>/build/native/lib
中有几个v###
子文件夹:v100, v110
用于GLEW,v100, v110, v120, v140
用于GLFW。如果我将项目的平台工具集从v141
更改为v140
(我也安装了VS2015),GLFW链接错误会消失(因为VS从GLFW包中创建相应的二进制文件),但GLEW仍然没有链接-我既没有v110
工具集,也不想在那里降级。
有没有办法将旧的NuGet C++包链接到使用现代平台工具集的项目?如果可能的话,我可以从源代码构建包--只要它是一个能自动管理到某个点的nuget包。
发布于 2017-01-11 16:25:58
我们无法将较旧的NuGet C++包链接到使用现代平台工具集的项目。
Visual Studio支持多个平台工具集,但现代平台工具集不向后兼容。因此,在VS 2015中使用平台工具集v140时,GLEW的v100,v110将生成链接错误。
在Visual Studio2015中使用v100,v110 for GLEW的最好方法是安装v110工具集,并使用它来维护二进制兼容的遗留代码。
有关配置旧平台程序的详细信息,请参阅:https://msdn.microsoft.com/en-us/library/jj851139.aspx
发布于 2017-05-15 21:01:22
似乎没有包含v141 PlatformToolset的包。通过编辑packages\googletest.1.8.0.0\build\native\googletest.targets:中包含的配置,您始终可以针对v141项目强制链接v140目标二进制文件
<ItemDefinitionGroup Label="Win32 and v140 and Release" Condition="'$(Platform.ToLower())' == 'win32' And '$(PlatformToolset.ToLower())' == 'v140' And ( $(Configuration.ToLower().IndexOf('debug')) == -1 )">
至
<ItemDefinitionGroup Label="Win32 and v140 and Release" Condition="'$(Platform.ToLower())' == 'win32' And '$(PlatformToolset.ToLower())' == 'v141' And ( $(Configuration.ToLower().IndexOf('debug')) == -1 )">
但你的里程可能会有所不同。
https://stackoverflow.com/questions/41568619
复制相似问题