让静态链接库(static library)兼容 MT, MTd, MD, MDd 4种运行库
来源:互联网 发布:300英雄淘宝金币cdk 编辑:程序博客网 时间:2024/06/11 18:12
最近在使用一个动态库产品时发现对方只提供了一个lib文件和.h文件, 但是神奇的是这个lib在 MT, MTd, MD, MDd 4种运行库 中均可以正确的编译, 所以进行了一番研究.
要想实现兼容, 必须满足如下条件
1. 生成lib文件的源码中不能使用 Standard C++ Library
在源代码中不能包含<string>, <vector> 等类似这样的C++标准定义的头文件, 否则会出现类似下边的错误
1>StaticLib.lib(StaticLib.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“MTd_StaticDebug”(LibDemo.obj 中)
2. 设置编译器参数: Zl
C/C++ -> 高级 -> 省略默认的库名称: 是(/Zl)
注: 因为不是很了解编译器的运行机制, 所以暂时还不确定这样做是否会带来问题
原则上应注意边界问题, 不要与lib文件传递crt对象
阅读全文
0 0
- 让静态链接库(static library)兼容 MT, MTd, MD, MDd 4种运行库
- 运行时库 /MT /MTD /MD /MDD
- /MD, /MDD, /ML, /MT,/MTD(使用运行时库)
- md /mdd /ml /mt/mtd vs运行库
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- /MD, /MDD, /ML, /MT,/MTD(使用运行时库)
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC运行时库MD,MT,MTD,MDD的区别
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC运行时库/MD、/MDd、/MT、/MTd说明
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- 运行时库MT、MTd、MD、MDd的研究
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- VC 运行时库 /MD、/MDd 和 /MT、/MTd
- (转)VC运行库MD /MDd /MT /MTd /ML /MLd
- java基础总结(1)---java语言概述
- 学习:Ubuntu14.04编译caffe问题记录
- Computer Architecture A Quantitative Approach 读书笔记chapter1-1
- java工具安装
- Angular-项目结构
- 让静态链接库(static library)兼容 MT, MTd, MD, MDd 4种运行库
- 用vuforia创建AR简单案例
- ado.net基础
- 2222222
- 机器学习之-最邻近算法(Nearest Neighbor)
- Scala方法定义,方法和函数的区别,将方法转换成函数
- 找假币算法
- mac Android Studio安装kotlin插件
- 本人2011级学生TXH大佬写的超短的SAP网络流程序