VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结

原文链接地址:https://blog.csdn.net/ithzhang/article/details/13170047

MSDN中对于在不同的配置下Link的LIB作了说明:

C Runtime Library:

开关

对应的库

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

多线程DLL的Debug版本

/MT

LIBCMT.LIB

多线程静态链接的Release版本

/MTd

LIBCMTD.LIB

多线程静态链接的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。

posted @ 2018-10-25 08:51  wuyuan2011woaini  阅读(133)  评论(0编辑  收藏  举报