我在C ++项目中修改了NuGet软件包管理器,遇到了问题。在我的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。据我了解,它们包含针对相应的VS工具集编译的二进制文件。如果我将项目的平台工具集从v141更改为v140(也安装了VS 2015),则GLFW链接错误消失(因为VS从GLFW包中找到了相应的二进制文件),但是GLEW仍然不链接-和我既没有v110工具集,也不想在那里降级。

有没有办法将较旧的NuGet C ++程序包链接到具有现代平台工具集的项目?如果可以通过某种方式从源代码构建程序包,我会很好-只要它保留一个可以自动管理到某个点的nuget程序包。

最佳答案

我们无法将较旧的NuGet C ++软件包链接到具有现代平台工具集的项目。

Visual Studio支持多个平台工具集,但是现代平台工具集不向后兼容。因此,在VS 2015中使用平台工具集v140时,用于GLEW的v100,v110将生成链接错误。

在Visual Studio 2015中将v100,v110用于GLEW的最佳方法是安装v110工具集,并使用它维护二进制兼容的旧代码。

有关为旧平台配置程序的详细信息,请参阅:
https://msdn.microsoft.com/en-us/library/jj851139.aspx

关于c++ - 结合使用旧的NuGet包和现代的Visual Studio工具集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41568619/

10-13 08:59