有个应用静态库的工程是在vs2010 中编译的,使用的运行库是vs2010 的运行库。
而静态库是使用vc6.0的编译时运行库。 在引入lib时 应用工程link时会报错, 主要问题是运行库版本不一致, 后来我使用的vs2010编译的lib静态库. 解决了部分问题。
以摘录百度网友 的《VC编译——link时报重复定义错误》 文章
C Runtime Library:
C++ Standard Library:
编译器会自动根据编译选项,选择对应的LIB文件。一般情况下这不会出现问题。 然而,在部分情况下,一旦你的程序的各个部分(LIB, OBJ…)并非由相同的编译选项编译出,而Link在一起的话,会出现各种各样的看似很难解决的问题,这类问题主要以重复定义的错误形式存在,通常的解决方法也很简单,就是选择同样的编译选项进行编译之后再Link。
不同编译库的作用: 1. LIBCMT:C Runtime库的多线程静态链接的Release版本 2. LIBCPMT:C++ Standard Library的多线程静态链接的Release版本 3. MSVCPRTD:C++ Standard Library的多线程DLL的Debug版本 4. MSVCRTD:C Runtime Library的多线程DLL的Debug版本
参考:http://blog.youkuaiyun.com/techweb/article/details/1937308 |