问题
我正在使用Visual Studio 2012来开发C ++ DLL。在某些机器上,无法加载这些DLL,因为缺少设置为“v110”的平台工具集。
我曾尝试安装较旧的c ++运行时。它们没有安装,因为“已经安装了一个较新的版本”。我还安装了当前的Windows SDK,但仍然没有其他项目可供选择,而不是v110。
问题
如何使用旧版本的C ++运行时编译我的C ++ DLL,以便它可以在非开发人员的计算机上运行?
答案 0 :(得分:23)
根据this page on MSDN,您需要具有相应版本的Visual Studio(2008或2010),或者“Platform Toolset”的相关Windows SDK下拉列出这些版本:
要更改目标平台工具集,您必须安装相关版本的Visual Studio或Windows Platform SDK。
“平台工具集”之间似乎也有点混淆,它控制着哪个编译器/链接器/等。用于构建您的应用程序,以及
另外,据我所知,Visual C ++ Redistributable不包含MFC运行时。它们可作为单独的MSI合并模块(MSM)使用。
答案 1 :(得分:7)
我想分享一些我遇到的信息,并想出如何将它们用于我的目的。
显然,使用静态链接是一个不错的选择。它并不总是对我有用,但对于我的一个较小的项目,它的效果非常好。结果是一个没有kernel32.dll
之外的依赖关系的DLL。
只需使用/MT
进行发布配置,然后使用/MTd
进行调试,您就可以了。
这里的问题是,像我这样的开发人员在发布后不久就会获得当前的Visual Studio版本,但是你真的不能指望普通用户安装运行时版本只有几周的时间。并且安装不同版本的Visual Studio只是为了使用旧的运行时绝对不是你想要的。
答案 2 :(得分:2)
提示互联网存档。 (我不能评论上面的陈述,我不知道为什么)
要在较新的Visual Studio中使用 v90平台工具集(= Visual Studio 2008)(我测试2013和2015),您需要安装Visual Studio 2008和Visual Studio 2010,因为vs90 MS Build程序文件夹中的平台工具集定义是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相同。
答案 3 :(得分:1)
这取决于你想要建立什么。通过安装Windows SDK 7.1可能支持某些功能。 see this post, same question, 但是如果你的项目依赖于MFC,那么很遗憾看起来它根本不可能,主要是因为VS2010正在部署MFC库。