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

3
我有一个使用Visual Studio 2008开发的ATL/WTL项目,到目前为止,我一直在静态链接CRT库,避免了需要运输它们的需求。然而,现在我需要考虑改用动态库(DLL),以减小代码大小,并因为我想使用优秀的crashrpt工具(需要你动态链接到CRT)。
现在,MS提供独立安装程序(vcredist_x86.exe)和MSM包,但这对我来说不好,原因有两个:
- 我没有使用基于MSI的安装程序(我正在使用InnoSetup)。 - 我的应用程序安装在受限用户帐户上,vcredist_x86.exe安装程序将无法工作。
因此,我想运输CRT DLL并将它们安装在我的应用程序程序文件夹中。现在,这是可以做到的,因为我找到了以下博客文章,作者是MSVC Libraries Development Lead Martyn Lovell,他说:
然而,如果您想安装applocal,您应该确保您的应用程序有一个清单,然后将整个文件夹复制到您的EXE目录中:X:\Program Files\Microsoft Visual Studio 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个回答

3

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


除了在“C/C++ -> 代码生成”页面上更改我的“运行时库”设置之外,我还需要做其他任何事情吗(当然,除了要发送CRT DLL文件!)? - Rob
正确,据我所知。只要你不尝试使用 /MDd 部署调试版本。 - Alex Budovski
在您的项目构建目录中查找,您会看到清单文件。 - Hans Passant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接