繁体   English   中英

使用VS2012创建可重新分发的C / C ++ DLL

[英]Creating redistrubutable C/C++ DLLs with VS2012

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

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

我将项目的整个“安装”文件夹复制到同事的Windows 8框中,Exe将运行,但无法加载.dll

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

选择其中之一,您应该选择第三个选项:

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

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

您可以使用便捷的Dependency Walker工具找出您的应用程序所依赖的DLL。 通常,使用动态运行时构建时,它们至少是msvcr * .dll(Microsoft C运行时)和ms​​vcp * .dll(Microsoft C ++运行时), 此处是更详细的列表。 要部署Microsoft运行时,可以将正式的Visual C ++可再发行组件安装程序(VCRedist_x86.exe)与应用程序一起提供。 或者,对于从2010年开始的Visual C ++,您可以将DLL放置在带有可执行文件的目录中,对于以前的版本,此过程要复杂一些

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

暂无
暂无

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

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