紧接上回静态库使用 注意运行库版本要一致
来源:互联网 发布:excel中国数据地图 编辑:程序博客网 时间:2024/06/06 04:30
有个应用静态库的工程是在vs2010 中编译的,使用的运行库是vs2010 的运行库。
而静态库是使用vc6.0的编译时运行库。 在引入lib时 应用工程link时会报错, 主要问题是运行库版本不一致, 后来我使用的vs2010编译的lib静态库. 解决了部分问题。
以摘录百度网友 的《VC编译——link时报重复定义错误》 文章
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。
不同编译库的作用:
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.csdn.net/techweb/article/details/1937308
- 紧接上回静态库使用 注意运行库版本要一致
- 不要混合使用运行时库的静态版本和动态版本!!!!
- 不要混合使用运行时库的静态版本和动态版本!!!!
- 不要混合使用运行时库的静态版本和动态版本!!!!
- 不要混合使用运行时库的静态版本和动态版本
- 不要混合使用运行时库的静态版本和动态版本
- 不要混合使用运行时库的静态版本和动态版本
- 使用JavaCPP Presets For OpenCV时一定要注意版本与本地OpenCV版本一致
- 从svn上回滚版本
- 从svn上回滚版本
- 使用pthread win32 静态库要注意的地方!!!
- xcode 编译静态库所要注意
- linux下使用静态库需要注意的几个问题
- 使用静态库时需要注意的事项
- 使用静态库时需要注意的事项
- linux下使用静态库需要注意的几个问题
- 静态方法使用注意!
- mysqlbinlog 与binlog要版本一致
- 1318. Magic Square
- 数据结构之顺序表的建立
- mac lion 下面如何让ab 生效
- 敏捷开发免费管理工具——火星人预览之五:常见问题问答
- Java 序列化反序列化文件
- 紧接上回静态库使用 注意运行库版本要一致
- 实现分析 - Enemy part2
- svn 批量更新 脚本
- 【转】QC与QTP自动化测试连接、自动化测试环境搭建
- 荒废了
- Android Binder设计与实现 – 设计篇
- SQL 2008 连接服务器问题
- widget实现forceStop后可以使用的思路
- 黑马程序员 java继承的学习总结