【发布时间】:2011-01-09 00:29:42
【问题描述】:
我有一个使用 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 DLL 的应用程序清单?我的项目目前使用的唯一清单信息如下(确保应用使用 v6 的 Common Controls):
/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 相似但不同的问题。
【问题讨论】:
标签: c++ visual-c++