在VS2005中建立Win32控制臺(tái)程序時(shí),可能會(huì)遇到以下運(yùn)行錯(cuò)誤:
于是程序無(wú)法正常運(yùn)行。
此問(wèn)題的原因是由于VS 2005在生成可執(zhí)行文件時(shí)使用了一種新的技術(shù),該技術(shù)生成的可執(zhí)行文件會(huì)伴隨生成一個(gè)清單文件(manifest file)(.manifest后綴文件)(其本質(zhì)上是XML文檔,你可以用文本編輯器打開(kāi)看看),并在鏈接完成后將該清單文件嵌入到exe文件中(默認(rèn)情況下)。而在FAT32文件系統(tǒng)中,在處理清單文件階段,當(dāng)增量鏈接時(shí)不能完成清單文件的更新(默認(rèn)情況下),于是造成清單文件嵌入失敗,從而使該exe文件運(yùn)行時(shí)沒(méi)有相應(yīng)的清單文件而運(yùn)行失敗并提示如上錯(cuò)誤。而在NTFS文件系統(tǒng)中則不會(huì)出現(xiàn)上面的問(wèn)題。
比較好的解決方案有兩個(gè):
1.在項(xiàng)目的“屬性|配置屬性|清單工具|常規(guī)”中的“使用FAT32解決辦法”選擇“是”(默認(rèn)為“否”),重新生成項(xiàng)目即可解決問(wèn)題。如下圖所示:
2.不啟用增量鏈接。在項(xiàng)目的“屬性|配置屬性|鏈接器|常規(guī)”中的“啟用增量鏈接”選擇“否”。此方法阻斷了問(wèn)題產(chǎn)生的源頭,其每次生成exe文件時(shí)都直接嵌入清單文件,而不是默認(rèn)的根據(jù)時(shí)戳而決定是否更新清單文件。如下圖所示: