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

C++ 分发Visual C++;运行库(MSVCRT),c++,visual-c++,C++,Visual C++,我有一个使用VisualStudio2008开发的ATL/WTL项目,到目前为止,我一直在与CRT库进行静态链接,避免了发布它们的需要。但是,现在我需要考虑使用动态库(DLL)来减少代码的大小,因为我想使用优秀的工具(它需要动态链接到CRT)。 现在,MS提供了一个独立安装程序(vcredit_x86.exe)和一个MSM软件包,但这对我没有好处,原因有二: 我没有使用基于MSI的安装程序(我使用的是InnoSetup) 我的应用程序安装在有限的用户帐户上,vcredit_x86.exe安装程

我有一个使用VisualStudio2008开发的ATL/WTL项目,到目前为止,我一直在与CRT库进行静态链接,避免了发布它们的需要。但是,现在我需要考虑使用动态库(DLL)来减少代码的大小,因为我想使用优秀的工具(它需要动态链接到CRT)。 现在,MS提供了一个独立安装程序(vcredit_x86.exe)和一个MSM软件包,但这对我没有好处,原因有二:

  • 我没有使用基于MSI的安装程序(我使用的是InnoSetup)
  • 我的应用程序安装在有限的用户帐户上,vcredit_x86.exe安装程序将无法工作
因此,我想出货的CRT DLL,然后安装在我的应用程序文件夹。现在,这是我发现的由MSVC库开发负责人Martyn Lovell所做的,他说:

然而,如果你想 安装applocal,您应该确保 您的应用程序具有清单, 然后复制整个文件夹 进入您的EXE目录:

X:\Program Files\Microsoft Visual 演播室 8\VC\redist\x86\Microsoft.VC80.CRT

和其他文件夹(如果您使用的文件夹超过 阴极射线管。确保您包括 舱单

只是想知道我在追求什么-除了我不明白这一部分:

确保应用程序具有清单

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

有人能给我提供如何使用VisualStudio2008使用manifest magic的说明吗?在我的Visual Studio VC\redist\x86\Microsoft.VC90.CRT文件夹中有一个Microsoft.VC90.CRT.manifest文件-我是否需要以某种方式使用它


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

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

因此,除了更改“C/C++->代码生成”页面上的“运行时库”设置外,我不需要做任何其他事情(当然,除了提供CRT DLL!)?正确,AFAIK。(只要您没有尝试使用
/MDd
部署调试版本)查看项目的构建目录,您将看到清单文件。
/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"