VC運行庫版本不一樣致使連接.LIB靜態庫時發生重複定義問題的一個案例分析和總結

原文連接地址:https://blog.csdn.net/ithzhang/article/details/13170047多線程

MSDN中對於在不一樣的配置下Link的LIB做了說明:spa

C Runtime Library:.net

開關線程

對應的庫blog

版本
/MD MSVCRT.LIB 多線程DLL的Release版本
/MDd MSVCRTD.LIB

多線程DLL的Debug版本ci

/MT

LIBCMT.LIBget

多線程靜態連接的Release版本編譯器

/MTd

LIBCMTD.LIBit

多線程靜態連接的Debug版本

/clr編譯

MSVCMRT.LIB

託管代碼和非託管代碼混合

/clr:pure MSVCURT.LIB

純託管代碼

 

C++ Standard Library:

開關

對應的庫

版本
/MD MSVCPRT.LIB 多線程DLL的Release版本
/MDd MSVCPRTD.LIB

多線程DLL的Debug版本

/MT

LIBCPMT.LIB

多線程靜態連接的Release版本

/MTd

LIBCPMTD.LIB

多線程靜態連接的Debug版本

編譯器會自動根據編譯選項,選擇對應的LIB文件。通常狀況下這不會出現問題。

然而,在部分狀況下,一旦你的程序的各個部分(LIB, OBJ…)並不是由相同的編譯選項編譯出,而Link在一塊兒的話,會出現各類各樣的看似很難解決的問題,這類問題主要以重複定義的錯誤形式存在,一般的解決方法也很簡單,就是選擇一樣的編譯選項進行編譯以後再Link。

相關文章
相關標籤/搜索