VS.NET 運行庫衝突的解決方案

來源:互聯網
上載者:User

運行庫衝突的原因:

   當連結第三方庫時,可能會出現連結庫衝突的問題。造成這種錯誤的原因可能是因為第三方庫使用的運行庫 和 使用該第三方庫的應用程式使用的運行庫不一致造成的。   (VS 工程-->屬性—>C/C++ -->代碼產生-->運行庫 可以設定運行庫編譯 標記)

運行庫編譯標記:

動態連結程式庫版本:
/MD Multithreaded DLL 使用匯入庫MSVCRT.LIB
/MDd Debug Multithreaded DLL 使用匯入庫MSVCRTD.LIB
靜態連結庫版本:
/ML Single-Threaded 使用靜態庫LIBC.LIB
/MLd Debug Single-Threaded 使用靜態庫LIBCD.LIB
/MT Multithreaded 使用靜態庫LIBCMT.LIB
/MTd Debug Multithreaded 使用靜態庫LIBCMTD.LIB

解決方案:

(1)找出與當前運行庫相衝突的第三方庫使用的運行庫名稱。

比如我們當前應用程式使用的運行庫編譯標記為:  /MDD     

第三庫編譯使用的編譯標記為:  /MTD 

這時如果在應用程式中使用第三庫的lib檔案,就會報錯誤為

某符號標記在MSVCRTD.LIB中已定義,該錯誤所在檔案為:LIBCMTD.LIB

(2)根據錯誤所在檔案:LIBCMTD.LIB,我們就可以反過來知道第三方庫的運行庫編譯標記為 /MTD

(3)這時候VS 工程-->屬性—>C/C++ -->代碼產生-->運行庫,修改編譯標記為/MTD

(4)VS 工程-->屬性—>連結器-->附加選項:添加: /NODEFAULTLIB:MSVCRTD

 

OK,重建,問題解決。沒有運行庫衝突的問題了。其實出現這個問題是因為編譯時間的參數不一致導致的。只要把兩方面的編譯時間參數修改一致就可以解決了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.