繁体   English   中英

使用Visual Studio 2012并使用较旧的平台工具集进行编译?

[英]Use Visual Studio 2012 and compile with older platform toolset?

问题

我正在使用Visual Studio 2012来开发C ++ DLL。 在某些机器上,无法加载这些DLL,因为缺少设置为“v110”的平台工具集。

我试图安装较旧的c ++运行时。 它们没有安装,因为“已经安装了一个较新的版本”。 我还安装了当前的Windows SDK,但仍然没有其他项目可供选择而不是v110。

如何使用旧版本的C ++运行时编译我的C ++ DLL,以便它可以在非开发人员的机器上运行?

平台工具集是v110

根据MSDN上的此页面 ,您需要具有相应版本的Visual Studio(2008或2010),或者“Platform Toolset”的相关Windows SDK下拉列表以列出这些版本:

要更改目标平台工具集,必须安装相关版本的Visual Studio或Windows Platform SDK。

您还似乎在“Platform Toolset”之间有点混淆,它控制着哪个编译器/链接器/等。 用于构建应用程序,以及运行应用程序所需的“Visual C ++ Redistributable”。 您不能在用户的PC上安装“Platform Toolset”,也不能通过在开发PC上安装特定的“Visual C ++ Redistributable”来使用它。

另外,据我所知,Visual C ++ Redistributable不包含MFC运行时。 它们可作为单独的MSI合并模块(MSM)使用。

我想分享一些我遇到的信息,并想出如何将它们用于我的目的。

显然,使用静态链接是一个不错的选择。 它并不总是对我有用,但对于我的一个较小的项目,它的效果非常好。 结果是除了kernel32.dll之外没有依赖关系的DLL。

只需使用/MT进行发布配置和/MTd进行调试,你就可以了。

这里的问题是像我这样的开发人员在发布后不久就获得了当前的Visual Studio版本,但是你真的不能指望普通用户安装只有几周的运行时版本。 并且安装不同版本的Visual Studio只是为了使用旧的运行时绝对不是你想要的。

Visual Studio 2013中的静态链接

互联网档案的提示。 (我不能评论上面的陈述,我不知道为什么)

要在较新的Visual Studio(I testet 2013和2015)中使用v90平台工具集(= Visual Studio 2008) ,您需要安装Visual Studio 2008和Visual Studio 2010,因为MS Build程序文件夹中的vs90平台工具集定义是部分von Visual Studio 2010。

适用于v90和v100的C:\\Program Files (x86)\\MSBuild\\Microsoft.Cpp\\v4.0\\Platforms\\x64\\PlatformToolsets

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0

适用于V110 V120和V140

表示Visual Studio版本:v90 = 2008,v100 = 2010,V110 = 2012,V120 = 2013,V140 = 2015。

在安装vob VS2010之后,较新的Visual Studio 2013和2015版本可以使用vs90和vs100平台工具集。 (这不会在没有Visual Studio 2013/2015的新安装的情况下实现。)我想Visual Studio 2012的运行方式与VS2013和VS2015相同。

这取决于你想要建立什么。 通过安装Windows SDK 7.1可能支持某些功能。 看到这篇文章,同样的问题 ,但如果你的项目依赖于MFC,那么不幸的是它看起来根本不可能,主要是因为VS2010正在部署MFC库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM