vs除錯C 程式時提示 系統找不到指定檔案

2021-07-03 05:56:19 字數 987 閱讀 9108

vs 2005在生成可執行檔案時使用了一種新的技術,該技術生成的可執行檔案會伴隨生成乙個清單檔案(manifest file)(.manifest字尾檔案)(其本質上是xml文件,你可以用文字編輯器開啟看看),並在鏈結完成後將該清單檔案嵌入到exe檔案中(預設情況下)。而在fat32檔案系統中,在處理清單檔案階段,當增量鏈結時不能完成清單檔案的更新(預設情況下),於是造成清單檔案嵌入失敗,從而使該exe檔案執行時沒有相應的清單檔案而執行失敗並提示如上錯誤。

解決方案很多,列舉如下:

2. 既然跟fat32系統有關,那麼我們可以選擇在ntfs檔案系統中開發從而避免該問題,此方法同上,也是採用的迴避問題的方式,不提倡。

3. 該方法仍與fat32有關:在專案的「屬性|配置屬性|清單工具|常規」中的「使用fat32解決辦法」選擇「是」(預設為「否」),重新生成專案即可解決問題。該方法是唯一真正針對問題所在而提出的解決方法,使清單工具可以正確更新。(此方法是官方解決方法,也比較方便,推薦)

4. 既然問題是在更新嵌入的清單檔案時發生的,由於fat32的原因而未能更新嵌入的清單檔案,於是我們有如下兩種解決方法:

(1)不啟用增量鏈結。在專案的「屬性|配置屬性|鏈結器|常規」中的「啟用增量鏈結」選擇「否」。此方法阻斷了問題產生的源頭,其每次生成exe檔案時都直接嵌入清單檔案,而不是預設的根據時戳而決定是否更新清單檔案。

(2)不嵌入清單檔案。在專案的「屬性|配置屬性|清單工具|輸入和輸出」中的「嵌入清單」選擇「否」,從而在生成exe檔案時附隨生成乙個清單檔案(預設情況下,其檔名為exe檔案的全名加上「.manifest」),避免了嵌入清單檔案可能失敗的問題。在程式執行時,會用到該清單檔案。顯然,這種方式使可執行程式產生了更多的外部依賴,不推薦。

最後,總結一下:

1. 此問題只在特定條件下才會出現:在fat32檔案系統中編譯、預設設定(增量模式、不啟用fat32解決方案、嵌入清單檔案)、非第一次生成可執行檔案檔案(即在增量連線、更新清單檔案時)。

2. 解決方案1和4.1方便實用,推薦使用。

vs除錯C 程式時提示 系統找不到指定檔案

vs 2005 我的是2010 在生成可執行檔案時使用了一種新的技術,該技術生成的可執行檔案會伴隨生成乙個清單檔案 manifest file manifest字尾檔案 其本質上是xml文件,你可以用文字編輯器開啟看看 並在鏈結完成後將該清單檔案嵌入到exe檔案中 預設情況下 而在fat32檔案系統...

提示找不到程式集

提示找不到程式集.原因是序列化時把序列化類的命名空間等資訊儲存了,但應用程式和類庫的命名空間可能是 不一樣的,所以提示找不到程式集.解決方法如下 1.將dll加入強名稱,註冊到全域性程式集快取中 2.在反序列化使用的iformatter 物件加入binder 屬性,使其獲取要反序列化的物件所在的程式...

執行linux下c程式時找不到my

不錯,解決問題。執行linux下c程式時找不到mysql.h的解決辦法 小強 今天看著看著 突然就想學學linux下c中怎麼連線mysql資料庫的。帶著好奇的心理編寫了,最最簡單的連線程式 include include mysql mysql 首先要定義個mysql物件,來實現初始化。main v...