mt.exe:general error c101008d 錯誤記錄(最終原因已查明)
該錯誤為:
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)頁中倒是有一個,而且有解決辦法,那就是在項目屬性——配置屬性——鏈接器——清單文件中, 把生成清單改成否就行了。
經(jīng)過進一步的探索,發(fā)現(xiàn)在項目屬性——配置屬性——清單工具——輸入和輸出中,把嵌入清單改成否也行。
然而,問題雖然解決了,原因卻還不明。因為,既然生成清單和嵌入清單是微軟的默認設(shè)置,為什么卻會出現(xiàn)錯誤呢?第一種方法的作者認為清單是.net程序 (托管程序)需要的,所以去掉后便能正常生成了,然而后一種方法仍然生成了清單,而且也能正常運行又作何解,而且微軟的說明中也沒有提到清單只是為CLR 程序準備的,而是應該所有程序都要加上清單。
更新:還有一種更簡單的方法:如果編譯前將所有打開的與該項目有關(guān)的文件都關(guān)掉,也可以解決問題。
最終原因已查明
由于VC需要把生成的文件中嵌入MANIFEST文件,而由于殺毒軟件之類的會握有這個文件句柄(因為殺毒軟件
發(fā)現(xiàn)這個EXE,DLL正在讀寫),于是VC就寫不進去了,方法是暫時關(guān)閉殺毒軟件,這樣就不用
改寫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