问题
我正在使用 Visual Studio 2012 开发 C++ DLL。在某些机器上无法加载这些 DLL,因为缺少设置为“v110”的平台工具集。
我曾尝试安装较旧的 c++ 运行时。他们没有安装,因为“已经安装了较新的版本”。我还安装了当前的 Windows SDK,但除了 v110 之外,仍然没有其他项目可供选择。
问题
如何使用旧版本的 C++ 运行时编译我的 C++ DLL,以便它可以在非开发人员机器上运行?
问题
我正在使用 Visual Studio 2012 开发 C++ DLL。在某些机器上无法加载这些 DLL,因为缺少设置为“v110”的平台工具集。
我曾尝试安装较旧的 c++ 运行时。他们没有安装,因为“已经安装了较新的版本”。我还安装了当前的 Windows SDK,但除了 v110 之外,仍然没有其他项目可供选择。
问题
如何使用旧版本的 C++ 运行时编译我的 C++ DLL,以便它可以在非开发人员机器上运行?
根据MSDN 上的此页面,您需要具有相应版本的 Visual Studio(2008 或 2010),或“平台工具集”下拉列表的相关 Windows SDK 以列出这些版本:
要更改目标平台工具集,您必须安装相关版本的 Visual Studio 或 Windows 平台 SDK。
您似乎对控制哪个编译器/链接器/等的“平台工具集”有点困惑。用于构建您的应用程序,以及运行您的应用程序所需的“Visual C++ Redistributable”。您不能在用户的 PC 上安装“平台工具集”,也不能通过在开发 PC 上安装特定的“Visual C++ Redistributable”来提供该工具集。
此外,据我所知,Visual C++ Redistributable 不包括 MFC 运行时。它们可作为单独的 MSI 合并模块 (MSM) 使用。
我想分享一些信息,我遇到了这些信息并想出了如何将它们用于我的目的。
显然,使用静态链接是一个不错的选择。它并不总是对我有用,但对于我的一个较小的项目,它工作得很好。结果是一个没有其他依赖关系的DLL kernel32.dll
。
只需/MT
用于发布配置和/MTd
调试,就可以了。
这里的问题是,像我这样的开发人员在发布后不久就获得了当前的 Visual Studio 版本,但你不能真的期望普通用户安装只有几周前的运行时。并且安装不同版本的 Visual Studio 只是为了使用旧的运行时绝对不是你想要的。
互联网档案的提示。(我不能评论上面的陈述,我不知道为什么)
要在较新的 Visual Studio(I testet 2013 和 2015)中使用v90 平台工具集(=Visual Studio 2008),您需要安装 Visual Studio 2008 和 Visual Studio 2010,因为 MS Build 程序文件夹中的 vs90 平台工具集定义是部分 von Visual Studio 2010。
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets
适用于 v90 和 v100
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 库。