您的位置:首页 > 其它

libcmt.lib和msvcrt.lib冲突,原因和解决方法

2016-06-30 15:38 399 查看
libcmt.lib是windows环境下vc提供的静态运行时库(多线程);msvcrt.lib是动态运行时库。

原因

由于DLL(或EXE)工程设置的Runtime Library 和 它导入的其他(.lib)库的Runtime Library不同。

比如: 下面为Release版,其中Runtime Library和use of MFC 需要匹配(所以这两个内容的设置是两两对应的)

类型我的DLL工程需要调用的lib库的工程结果
工程名DShow_GraphBaseclasses——
use of MFCUse MFC in a static LibraryUse MFC in a static Library——
Runtime LibraryMulti_threaded(/MT)Multi_threaded(/MT)不冲突
use of MFCUse MFC in a static LibraryUse MFC in a shared DLL——
Runtime LibraryMulti_threaded(/MT)Multi_threaded DLL(/MTd)冲突
use of MFCUse MFC in a shared DLLUse MFC in a static Library——
Runtime LibraryMulti_threaded DLL(/MTd)Multi_threaded(/MT)冲突
use of MFCUse MFC in a shared DLLUse MFC in a shared DLL——
Runtime LibraryMulti_threaded DLL(/MTd)Multi_threaded DLL(/MTd)不冲突
如果是Debug版本,只需要将上面的设置改为debug下的对应设置后,对应起来理解就可以了

解决方法

把在编译两个工程时,把两个运行库都改为统一的(都是(/MT)或都是(/MTd)),这样就能顺利编译通过了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息