今天又碰到一个链接库的问题。。
写了一个自己的链接库,然后需要在另一个程序中调用,在使用的时候总是提示:
导致LIBCMTD.lib 和 MSVCRD.lib造成冲突
一顿百度
一个Debug版的dll链接时,VS会首先链接QT的Debug库,比如QtCoreD.dll,而QtCoreD.dll内部又一定链接了VC的Debug库,比如msvcrD.dll,自己写的dll也会链接VC的Debug库,比如msvcrD.dll.相同的,Release版的都会去链接VC的Release库;
在Debug下要把下图中Runtime Library设置成如图所示MDd,在Release下要设成MD。
参数MDd就保证了Debug下加载VS的debug版本的库;参数MD就决定了在Release下加载VC Release版本的库。
link 你link了QT的Debug 库比如QtCoreD.dll. 而QtCoreD.dll内部link的一定是VC的Debug库,比如msvcrD.dll.
而你的算法库同时又link了VC的Release库,比如msvcr.dll. 所以实际上你的算法模块就混用debug和release库了。所以就加载不起来。
上述这个是转的别人的,感觉写的有点道理,但是不符合我的问题,贴出来看看也有帮助
我的问题 其实是出在了两个项目的开发模式不同导致的,我的lib是在debug下进行开发,而我的调用这个lib的是在release版本下开发的,所以我混用了debug跟release库,于是果断将lib改为release版本,得到.lib文件,放到原项目中,问题解决。。。