vs 2019編譯C出錯,vs 2005 編譯C 出錯

時間 2022-06-19 09:25:03

1樓:

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

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

1. 由於這是在鏈結動態執行庫出現的問題,所以你可以選擇**生成的連線方式為/mtd而非/mdd,不用這些dll檔案從而避免問題的出現。該方法有乙個很顯然的缺點:

適用範圍有限,不推薦該方法。

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

3. 該方法仍與fat32有關:在專案的「屬性|配置屬性|清單工具|常規」中的「使用fat32解決辦法」選擇「是」(預設為「否」),重新生成專案即可解決問題。

該方法是唯一真正針對問題所在而提出的解決方法,使清單工具可以正確更新。(此方法是官方解決方法,也比較方便,推薦)

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

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

(2)不嵌入清單檔案。在專案的「屬性|配置屬性|清單工具|輸入和輸出」中的「嵌入清單」選擇「否」,從而在生成exe檔案時附隨生成乙個清單檔案(預設情況下,其檔名為exe檔案的全名加上「.manifest」),避免了嵌入清單檔案可能失敗的問題。

在程式執行時,會用到該清單檔案。顯然,這種方式使可執行程式產生了更多的外部依賴,不推薦。

另外,還有乙個不能稱為方法的土辦法:每次build前手動刪除*.ilk檔案(增量鏈結檔案)(當然可以在專案屬性中寫入刪除命令,使其自動執行),不推薦該土辦法。

最後,總結一下:

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

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

2樓:匿名使用者

你的輸出目錄沒有debug吧,那麼就不會有.exe程式

不知道你的vs2005安裝正確沒有?

你看看屬性配置吧

3樓:匿名使用者

在建立win32控制台應用程式的嚮導時,你可以選擇建立乙個空專案,然後再自己建立你想要的標頭檔案和原始檔。我用的也是vs2005,可從來沒出現這種問題。

Vista系統下VS2019與VS2019的共存問題

1.可以安裝,我的電腦就是這樣的,不過我先裝的05再裝的082.設定不需要,但是需要打補丁 3.你安裝上以後執行vs05,系統會提示你需要安裝兩個補丁,乙個是vs2005sp1 for vista,乙個是vs2005 for vista 都安裝好以後就可以正常執行了,另外以後解除安裝也沒有問題的。那...

如何在VS2019中WindowsService定時任務

1開啟vs2013,選擇檔案 新建 專案。2在專案中找到 windows服務 專案,重新命名後點選確定。3在service1設計器中點選右鍵,選擇檢視 進入 頁面。4在 編輯器中新增 onstart 服務啟動方法。5繼續在 編輯器中新增 chksrv 方法。6繼續在 編輯器中新增你需要定時執行的任務...

vs2019中開發c 和在vc 6 0中有什麼不同

microsoft visual c 2005 提供了強大和靈活的開發環境,可用於建立基於 microsoft windows 和基於 microsoft net 的應用程式。它既可以用作整合開發系統,也可以用作一組獨立的工具。visual c 包含下列元件 visual c 2005 編譯器工具。...