2010-01-25 58 views
3

我有一个使用Visual Studio 2008开发的ATL/WTL项目,到目前为止,我一直在静态链接CRT库,避免需要运送它们。但是,我现在需要考虑使用动态库(DLL)来代替 - 以减小代码的大小,并且因为我想使用优秀的工具(需要动态链接到CRT)。分发Visual C++运行时库(MSVCRT)

现在,MS同时提供一个独立的安装程序(选择vcredist_x64.exe)和MSM包装但这不适合我,原因有二:

  • 我没有使用基于MSI安装程序(我用InnoSetup) 。
  • 我的应用程序安装在有限的用户帐户上,vcredist_x86.exe安装程序不起作用。

因此我想运送CRT DLL并安装到我的应用程序程序文件夹中。现在,这是你可以做的,因为我找到了following blog post由马丁·洛弗尔,在MSVC库开发铅,说:如果你想 安装-applocal

但是,你应该确保 您的应用程序有一个清单, 然后整个这个文件夹 的复制到您的EXE目录:

X:\ Program Files文件\微软的Visual Studio的 \ VC \ REDIST \ 86 \ Microsoft.VC80.CRT

和其他文件夹如果使用超过 的CRT。确保您包含 清单。

只是想我以后 - 除了我不明白这个部分:

确保您的应用程序有一个清单

我的问题是 - 如何创建一个应用程序清单引用我想要使用的CRT DLL?我的项目目前使用的唯一清单信息如下(这确保了应用程序使用公共控件V6):

/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\" 

可有人为我提供关于如何工作使用Visual Studio 2008的表现神奇的指令?在我的Visual Studio VC \ redist \ x86 \ Microsoft.VC90.CRT文件夹中有一个Microsoft.VC90.CRT.manifest文件 - 我需要以某种方式使用它吗?

注意:这是一个与this one类似但不同的问题。

回答

3

当您传递/ MD标志时,Visual Studio将为您生成正确的清单。

+0

因此,除了在'C/C++ - >代码生成'页面上更改我的'运行时库'设置外,我不需要做任何其他事情(除了发送CRT DLLs!)? – Rob 2010-01-25 09:47:54

+0

正确,AFAIK。 (只要你不试图用'/ MDd'部署一个调试版本) – 2010-01-25 10:21:52

+0

谢谢,我会给它一个。 – Rob 2010-01-25 10:35:18