=====================================================
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) |