libcmt.lib和msvcrt.lib沖突,原因和解決方法


libcmt.lib和msvcrt.lib沖突,原因和解決方法

https://blog.csdn.net/longlijun/article/details/7331093

libcmt.lib是windows環境下vc提供的靜態運行時庫(多線程);msvcrt.lib是動態運行時庫。

原因

由於DLL(或EXE)工程設置的Runtime Library 和 它導入的其他(.lib)庫的Runtime Library不同。

比如: 下面為Release版,其中Runtime Library和use of MFC 需要匹配(所以這兩個內容的設置是兩兩對應的)

類型 我的DLL工程 需要調用的lib庫的工程 結果
工程名 DShow_Graph Baseclasses ——
use of MFC Use MFC in a static Library Use MFC in a static Library ——
Runtime Library Multi_threaded(/MT) Multi_threaded(/MT) 不沖突
use of MFC Use MFC in a static Library Use MFC in a shared DLL ——
Runtime Library Multi_threaded(/MT) Multi_threaded DLL(/MTd) 沖突
use of MFC Use MFC in a shared DLL Use MFC in a static Library ——
Runtime Library Multi_threaded DLL(/MTd) Multi_threaded(/MT) 沖突
use of MFC Use MFC in a shared DLL Use MFC in a shared DLL ——
Runtime Library Multi_threaded DLL(/MTd) Multi_threaded DLL(/MTd) 不沖突

如果是Debug版本,只需要將上面的設置改為debug下的對應設置后,對應起來理解就可以了


解決方法

  • 把在編譯兩個工程時,把兩個運行庫都改為統一的(都是(/MT)或都是(/MTd)),這樣就能順利編譯通過了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM