Visual Studio 2005中 - C ++ - 什么控制清单创建
-
21-08-2019 - |
题
我试图找出原因调试版本是用吹“从属组件microsoft.vc80.debugcrt找不到”事件错误。
删去(什么也没.CPP或.h)中并重新创建解决方案 - 我仍然有问题。
一个谷歌搜索没有结果和一个VS的重新安装没有产生任何变化。
我确实有在C的DLL:\ Windows \ WinSxS文件\ x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c
我打开\调试\ .exe.intermediate.manifest文件,它有2(dependentAssembly)项:搜索 1:名称= 'Microsoft.VC80.DebugCRT' 版本= '8.0.50608.0' 结果 第二:名称= 'Microsoft.VC80.DebugCRT' 版本= '8.0.50727.762'
如果我删除一个和更改将另一根 名称= Microsoft.VC80.DebugCRT'版本= '8.0.50727.42'
我可以得到一个构建,将启动。
就算我没有安装VS2008 - 但什么是控制版本?或者我怎样才能得到正确的调试DLL版本“粘”。
VS2008是通过控制面板de安装。
编辑:如果DebugCRT中搜索没有发现任何在注册表中搜索 环境路径指向VS8文件夹。点击 只有1在c DebugCRT文件夹:\ WINDOWS \ winsxs文件\ Policies文件夹点击 (8.0.50.727.42)点击 在C:\ WINDOWS \ winsxs文件\文件夹中表现仅拥有0.42版本的.cat和.manifest的结果的 该.manifest的文件(在上面的清单文件夹)具有版本= “8.0.50727.42”
澄清:清单文件具有2“dependentAssembly”各自具有不同版本,而不是0.42条目。我可以删除1项,改变对其他的版本相匹配的0.42得到一个调试版本启动。
EDIT2:我还使用升压和DLL的内部存在0.762版本
解决方案
版本通过从升压的DLL这是升压的下载,预编译版本拾取。一旦库被重新编译的(和重新安装)的溶液的重新构建产生与单个版本和链接程序清单和跑。
因此 - 确认被导入到用于使用的版本溶液中的库和DLL。
其他提示
VS 2008是VC90不VC80,因此这不是问题的一部分。清单请求的组件和的SxS加载assenbly之间的关系用C是发现:\ Windows \ WinSxS文件\政策。 IIRC, “8.0.50608.0” 由VS2005 SP1之前生成。这是错误的,应该是8.0.50727.42,但是这是由政策抓住了。
我不知道你是如何获得两个清单。什么是您的清单设置?
我建议在您的特定环境改造提升。此外,您可以通过完全静态链接的CRT废除由侧部组件的侧面......