使用VS2012创建可再发行/ C ++ DLL

时间:2015-01-23 21:15:36

标签: c++ windows visual-studio-2012 dll

我有一个使用vc.mak makefile的VS2012 C ++项目来构建解决方案。我构建了一个或多或少相同的.exe和.dll(exe有一个main()是唯一的区别)。

我需要做些什么才能在多个版本的Windows上运行这两段代码?我正在使用Windows 8.1 Pro,我当然能够运行我的exe并使用dll罚款。我构建了一个新的Win8.1 Pro VM,我发现尝试运行.exe,它丢失了MSVCR110.dll文件,所以我将其复制并运行。我的共享库也可以在此之后使用。

我将项目的整个“install”文件夹复制到我的同事windows 8框中,然后exe将运行,但我无法加载.dll

我需要复制什么才能让我的dll在任何Windows机器上运行?

2 个答案:

答案 0 :(得分:1)

选择其中一个,您应该更喜欢第三个选项:

  • 我的计算机上的某些计算机游戏在其可执行文件所在的目录中只有一个msvcr * .dll,因此您可以选择此方法 - 只需将该DLL与您的可执行文件一起发送。您可以在%WINDIR%\ System32或%WINDIR%\ SysWOW64中找到该DLL,或者从任何已将其复制到其目录中的程序“借用”它,并希望它不会被该程序的作者修改。
  • 另一种选择是使用/ MT开关编译该程序 / MD(或调试版本中的MTd而不是MDd),但我没有 有关makefile的经验,所以我不能说有多难。同 这种方法将运行时库静态链接到您的 可执行文件 - 但准备好让可执行文件具有更大的大小。
  • 第三个选项是创建一个安装你的安装程序 Visual Studio 2012的应用程序和Visual C ++ Redistributable 好 - 或者手动下载并安装可再发行组件。

答案 1 :(得分:1)

Here是来自Microsoft的C ++应用程序部署指南,有点臃肿但值得一看。

您可以使用方便的Dependency Walker工具找到您的应用程序所依赖的DLL。通常在使用动态运行时构建时,它们至少为msvcr * .dll - Microsoft C运行时和msvcp * .dll - Microsoft C ++运行时,here是更详细的列表。要部署Microsoft运行时,您可以随应用程序一起发布官方Visual C ++ Redistributable安装程序(VCRedist_x86.exe)。对于从2010年开始的Visual C ++,您可以将DLL放在具有可执行文件的目录中,对于先前版本,该过程为a bit more complicated

为了能够在Windows XP上运行应用程序,请确保在项目属性的Platform Toolset选项卡上选择General并支持XP(但即使这样,运行时也不会在SP2之前的系统上启动)。 / p>