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。

相关文章
相关标签/搜索