VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
Posted wuyuan2011woaini
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。
以上是关于VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结的主要内容,如果未能解决你的问题,请参考以下文章
VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结