談談Visual Studio中的清單

來源:互聯網
上載者:User

清單的作用,指定程式依賴的C運行庫的dll及版本,包括mfc,atl,CRT等,可以在visual studio安裝目錄下的vc/redist下看到Release和Debug的版本,具體依賴哪項,可以看看您的項目配置

 

(確定您的應用程式依賴哪些 Visual C++ 庫的一種方式是:查看您項目的"項目設定"對話方塊中的"常規"選項卡。例如,您可能看到項目使用的是 MFC 和 ATL 庫。如果選擇了"在動態庫中使用 MFC",則您的應用程式在運行時將依賴 MFC DLL(如 mfc80.dll)。如果您的應用程式不使用 MFC 或 ATL,它可能仍依賴 CRT 庫(如果已在"項目屬性"的 C/C++ 分支中的"代碼產生"選項卡上為"執行階段程式庫"選擇了"多線程調試
DLL (/MDd)")

---該段引自msdn理解 Visual C++ 應用程式的依賴項


清單可以嵌入也可以不嵌入。

嵌入的好處不需要特別留意將清單跟可執行程式放在一起,缺陷是換一個電腦運行出了問題不容易處理。

不嵌入的優缺點與嵌入的一一對應,此生彼長。

這裡注意下,一般有三個檔案,一個資源檔,一個中間清單,還有一個最終清單,對我們來說真正有用的就是最終清單,預設命名方式為程式名.manifest,比如你的可執行檔是test.exe,那麼該最終清單為test.exe.manifest。

 

如果您調整清單設定由嵌入到不嵌入,注意需要重新編譯所有依賴的外部庫,否則容易導致R6034,某個應用程式嘗試不使用清單來載入C運行庫。

 

我除了遇到過上面這個清單引起的錯誤以外,還碰到如下由清單引起的錯誤:visual studio 2008 sp1編寫的嵌入清單的程式換了台電腦運行,提示配置錯誤,使用visual studio 2008遠端偵錯提示錯誤由清單導致,尋找錯誤的過程道路曲折,還是項目組組長細心地發現了問題,嵌入的清單引用的crt版本號碼與拷貝過去的crt庫版本不一致,vs2008
sp1產生manifest檔案中vc++ runtime的版本號碼為9.0.21022.8,而sp1的版本是9.0.30729.1。發現了問題接下來就好解決了,網上搜尋下,具體可以參考http://blog.squallatf.org/post/125/,另外微軟官方論壇也有對該問題的說明與解決方案。

 


 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.