分发Visual C ++运行时库(MSVCRT)

时间:2010-01-25 08:44:21

标签: c++ visual-c++

我有一个使用Visual Studio 2008开发的ATL / WTL项目,直到现在我已经静态链接到CRT库,无需发送它们。但是,我现在需要考虑使用动态库(DLL) - 以减少代码的大小,因为我想使用优秀的crashrpt工具(需要您动态链接到CRT。)

现在,MS提供独立安装程序(vcredist_x86.exe)和MSM程序包,但这对我没有好处,原因有两个:

  • 我没有使用基于MSI的安装程序(我正在使用InnoSetup)。
  • 我的应用程序安装在受限用户帐户上,而vcredist_x86.exe安装程序将无效。

因此,我想发送CRT DLL并安装到我的应用程序程序文件夹中。现在,这是你可以做的事情,因为我发现MSVC图书馆开发主管Martyn Lovell的following blog post说:

  

但是,如果你愿意的话   install-applocal,你应该确定   你的应用程序有一个清单,   然后复制整个文件夹   进入你的EXE目录:

     

X:\ Program Files \ Microsoft Visual   工作室   8 \ VC \ redist \ x86 \ 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的问题相似但不同。

1 个答案:

答案 0 :(得分:3)

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