Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2347138
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2008-04-10 18:45:25

=====================================================
An application has made an attempt to load the C runtime library incorrectly. Please contact the application s support team for more information.
=====================================================

忘了把对话框存成图片保存了, 上面是用Abbyy finereader的screen reader读出来的内容.

[又遇到这样的问题了, 把图片贴出来]

上面文字的内容只剩下了:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
</assembly>


后面一大片全是空格. 这就是问题所在.

在微软的网页
(VS.80).aspx
有解释这个问题, 不过它的解释跟我的情况对不上号.

.NET调用native DLL中的export函数, 用Depends.exe跟踪, LoadLibrary失败, 其中一堆错误, 但这些错误未必是引起失败的原因, native DLL中也已经正确embed 了manifest资源, 但就是反复出现这个问题, 重新编译不行, 最后, 重新build整个solution莫名其妙地解决了问题, 我不喜欢出现bug, 同样不喜欢这样来的稀里糊涂去的莫名其妙的bug.

没办法, 只能先记下来这一案例, 记住以后rebuild整个 solution或许能绕过去.

=========================================

今天同事碰到同样的问题了, 按我的建议rebuild整个solution好几次都不见效, 围观的人心里一定都觉得这样解决问题的办法太幼稚了. 我在给大家解释说自己才碰到这个R6034错误时, 心里想, 既然微软说可能是manifest没有被打进去, 而IDE又很方便地可以查看exe或DLL中的资源, 何不看一下到底有没有加进该资源呢, 一看之下, 才发现这里正是问题所在: 资源是有的, 长度看起来也对, 只是文件后面的绝大多数内容都是0x20, 也就是空格. 这与我直观的第一印象就对不上号, 因为我查看过正常的 manifest XML文件是什么样的, 再到我电脑上查看我通过rebuild编出的正确的dll, 果然我的DLL中内嵌的资源已经是正确的了, 马上想到只需要在DLL项目配置中先把生成内嵌manifest资源关闭, 然后再打开, 一试之下果然凑效, 我们整个solution中有两个纯粹的C++项目, 这两个项目都出现了这个manifest资源内容不正确的情况. 总而言之, 问题是找到了, 看起来还是微软的bug.

阅读(3640) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~