Ahm*_*aid 11 c++ msvcrt visual-studio-2008 visual-c++
我正在使用VS2008开发一个COM dll,它默认使用CRT版本9,但我使用的TSF(文本服务框架)与新的CRT不兼容.我认为解决方案是使用兼容的解决方案,那么如何指定CRT版本呢?
Ofe*_*lon 10
我衷心地加入了建议,不要手动更改链接的CRT版本.但是,如果由于某种原因(我无法想象)这对您来说是正确的行动方式,那么这样做的方法是更改项目的清单.
首先确保没有在每个构建上生成清单(在VS2005上:配置属性/链接器/清单文件/生成清单),因为它会覆盖您的手动更改.还要确保启用了隔离.接下来,找到清单文件 - 应该在$(IntDir)(例如,Debug).您应该看到类似于的部分 -
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
Run Code Online (Sandbox Code Playgroud)
(当然,对于调试版本).您需要编辑CRT元素的version和publicKeyToken属性.您可以检查本地WINDOWS\WinSxS文件夹中的文件以查看可用的版本.一旦找到所需的版本,请在此处查看如何解压缩publicKeyToken.(虽然我首先尝试直接查看其他项目的清单,链接到您想要的CRT版本).
如果你去那里,期待一些粗糙的水.如果您的应用程序是一个不与其他并排组件(MFC,OpenMP等)链接的控制台应用程序,您可能会有一些运气.如果您的应用程序非常重要,如果SxS组件没有一些复杂的版本依赖性,我会感到惊讶.
(编辑)您还需要在应用程序中分发您正在使用的特定CRT.这是有人这样做的.
| 归档时间: |
|
| 查看次数: |
9727 次 |
| 最近记录: |