mt.exe:general error c101008d 錯(cuò)誤記錄(最終原因已查明)
該錯(cuò)誤為:
mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file ".Releasejiaoshi.exe". f
其最終原因已查明見最后一部分
上網(wǎng)找了一下,只有英文網(wǎng)頁有相關(guān)討論,懶得去翻譯了。中文網(wǎng)頁中倒是有一個(gè),而且有解決辦法,那就是在項(xiàng)目屬性——配置屬性——鏈接器——清單文件中, 把生成清單改成否就行了。
經(jīng)過進(jìn)一步的探索,發(fā)現(xiàn)在項(xiàng)目屬性——配置屬性——清單工具——輸入和輸出中,把嵌入清單改成否也行。
然而,問題雖然解決了,原因卻還不明。因?yàn)?,既然生成清單和嵌入清單是微軟的默認(rèn)設(shè)置,為什么卻會出現(xiàn)錯(cuò)誤呢?第一種方法的作者認(rèn)為清單是.net程序 (托管程序)需要的,所以去掉后便能正常生成了,然而后一種方法仍然生成了清單,而且也能正常運(yùn)行又作何解,而且微軟的說明中也沒有提到清單只是為CLR 程序準(zhǔn)備的,而是應(yīng)該所有程序都要加上清單。
更新:還有一種更簡單的方法:如果編譯前將所有打開的與該項(xiàng)目有關(guān)的文件都關(guān)掉,也可以解決問題。
最終原因已查明
由于VC需要把生成的文件中嵌入MANIFEST文件,而由于殺毒軟件之類的會握有這個(gè)文件句柄(因?yàn)闅⒍拒浖?br />發(fā)現(xiàn)這個(gè)EXE,DLL正在讀寫),于是VC就寫不進(jìn)去了,方法是暫時(shí)關(guān)閉殺毒軟件,這樣就不用
改寫MANIFECT
我用的是瑞星殺毒軟件,有這個(gè)問題.
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