mt.exe:general error c101008d(最终原因已查明)

来源:互联网 发布:杀出重围 知乎 编辑:程序博客网 时间:2024/05/16 14:39
mt.exe:general error c101008d(最终原因已查明)_算法的天空_百度空间  

2011-05-27 16:22:41|  分类:坑爹软件问题 |  标签: |字号 订阅

 
 
算法的天空
本博客非注明的文章节录或全部来自互联网,本人转载并不表示明确的或暗示的任何对这些内容的支持或反对,仅仅作为转载.本人不对文章的正确性,有效性,适用性做任何明确的或暗示的保证.
mt.exe:general error c101008d(最终原因已查明)
2010年03月02日 星期二 下午 07:21
警告较为简单,主要是使用了原来RTL中字符串处理函数如strcpy等现在被认为不安全的函数造成的。

而错误就让人纳闷了,该错误为:

mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file ".\Release\jiaoshi.exe". f

上网找了一下,只有英文网页有相关讨论,懒得去翻译了。中文网页中倒是有一个,而且有解决办法,那就是在项目属性——配置属性——链接器——清单文件中, 把生成清单改成否就行了。

经过进一步的探索,发现在项目属性——配置属性——清单工具——输入和输出中,把嵌入清单改成否也行。

然而,问题虽然解决了,原因却还不明。因为,既然生成清单和嵌入清单是微软的默认设置,为什么却会出现错误呢?第一种方法的作者认为清单是.net程序 (托管程序)需要的,所以去掉后便能正常生成了,然而后一种方法仍然生成了清单,而且也能正常运行又作何解,而且微软的说明中也没有提到清单只是为CLR 程序准备的,而是应该所有程序都要加上清单。

更新:还有一种更简单的方法:如果编译前将所有打开的与该项目有关的文件都关掉,也可以解决问题。

最终原因已查明
由于VC需要把生成的文件中嵌入MANIFEST文件,而由于杀毒软件之类的会握有这个文件句柄(因为杀毒软件
发现这个EXE,DLL正在读写),于是VC就写不进去了,方法是暂时关闭杀毒软件,这样就不用
改写MANIFECT
我用的是瑞星杀毒软件,有这个问题.
Hi,

This might be due to antivirus holding open handle on the exe generated and thus when VS tries to embed the manifest it fails with access denied.
Is Antivirus running on your machine? Does this repro with Antivirus turned off?

If above is not the case can you provide us with a repro.

Thanks,

VC++ Team
原创粉丝点击