【转】boost 库后缀名
Boost官网的《Geting Started On Windows》(http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html)提到了Boost库的命名,摘录如下:
以 libboost_regex-vc71-mt-d-1_34.lib 为例:
- lib
前缀:除了Microsoft Windows之外,每一个Boost库的名字都以此字符串开始。在Windows上,只有普通的静态库使用lib前缀;导入库和DLL不使用。 - boost_regex
库名称:所有boost库名文件以boost_开头。 - -vc71
Toolset 标记:标识了构建该库所用的toolset和版本。 - -mt
Threading 标记:标识构建该库启用了多线程支持。不支持多线程的库没有-mt。 - -d
ABI标记:编码了影响库和其他编译代码交互的细节。对于每一种特性,向标记中添加一个字母:Key Use this library when: s 静态链接到C++标准库和编译器运行时支撑库 g 使用标准库和运行时支撑库的调试版本 y 使用Python的特殊调试构建 d 构建代码的调试版本 p 使用STLPort标准库而不是编译器提供的默认库 n 使用STLPort已被弃用的“native iostreams” - -1_34
版本标记:完整的Boost发布号,下划线代替点。例如,1.31.1版本将被标记为“-1_31_1”。 - .lib
扩展名:取决于操作系统。在大多数unix平台上,.a是静态库,.so是共享库。在Windows上,.dll表示共享库,.lib是静态或导入库。
下表是对Regex库编译后的文件名:
文件名 | 含义 | 编译使用该库的程序时应使用的编译选项 |
libboost_regex-vc90-mt-sgd-1_38.lib |
静态库,多线程,调试版本 使用静态调试版本C运行时库(LIBCMTD.LIB和LIBCPMTD.LIB) |
/MTd |
libboost_regex-vc90-mt-s-1_38.lib |
静态库,多线程 使用静态版本C运行时库(LIBCMT.LIB和LIBCPMT.LIB) |
/MT |
libboost_regex-vc90-mt-gd-1_38.lib |
静态库,多线程,调试版本 使用动态调试版本C运行时库(MSVCRTD.LIB和MSVCPRTD.LIB) |
/MDd |
libboost_regex-vc90-mt-1_38.lib |
静态库,多线程 使用动态版本C运行时库(MSVCRT.LIB和MSVCPRT.LIB) |
/MD |
boost_regex-vc90-mt-gd-1_38.lib | 导入库(boost_regex-vc90-mt-gd-1_38.dll),多线程,调试版本 | |
boost_regex-vc90-mt-1_38.lib | 导入库(boost_regex-vc90-mt-1_38.dll)多线程 |
需要注意的是,链接时,所使用的Regex库文件名必须和编译选项匹配,否则会造成如下链接错误:
LINK : warning LNK4098: defaultlib '×××××' conflicts with use of other libs; use /NODEFAULTLIB:library
原因是,当编译时,cl.exe(也就是VC的编译器)会根据上述编译选项在编译成的obj文件中植入相应的defaultlib文件名(使用DUMPBIN /DIRECTIVE ***,lib可以查看),如/MT对应的就是LIBCMT.LIB(C)和LIBCPMT.LIB(C++标准库)。当链接器处理该obj文件时,会从文件中取出该defaultlib文件名,将其放在命令行库列表的最后以供使用。对于静态库的处理也是如此,静态库也是由一些obj文件组成的,每个obj文件中也根据当时的编译选项被植入了相应的defaultlib。当链接器处理静态库时,也会将涉及到的obj文件中的defaultlib放在命令行库列表的最后。假设,我们的程序使用/MT编译,那个对应的defaultlib就是LIBCMT.LIB(C)和LIBCPMT.LIB(C++标准库)。而使用的是libboost_regex-vc90-mt-sgd-1_38.lib,它对应的defaultlib就是LIBCMTD.LIB和LIBCPMTD.LIB。链接过程中,链接器会发现采用了不同的运行时库,所以会出现上述错误。
幸运的是,Visual C++支持自动链接,当包含Regex的头文件时,Regex会根据当前工程的编译选项(不同的编译选项会定义不同的宏,具体参见上一篇C运行时库)自动告诉编译器将哪个文件送给链接器。
Boost.Regex默认使用的静态链接方式,如果希望使用动态链接方式,如何实现呢? 定义宏BOOST_REGEX_DYN_LINK。要注意,一定要在包含regex头文件之前定义该宏:
#include <boost/regex.hpp>
关于此宏的解释参见 http://www.boost.org/doc/libs/1_38_0/libs/regex/doc/html/boost_regex/configuration/linkage.html
转载于:https://www.cnblogs.com/hours10000/archive/2013/02/18/2915458.html
【转】boost 库后缀名相关推荐
- 个人代码库の自定义后缀名
using Microsoft.Win32; //操纵注册表的必要命名空间. namespace myMethod { public class CreateSuffixName { //使程序获取被 ...
- boost库介绍以及使用
C++ boost库介绍以及使用 一. 什么是boost库 boost 库是一个优秀的,可移植的,开源的 C++ 库,它是由 C++ 标准委员会发起的,其中一些内容已经成为了下一代 C++ 标准库 ...
- boost库在visual studio、DevC++和vscode上的环境配置
目录标题 @[TOC](目录标题) 1.boost库简介 1. 获取 Boost 2. Boost 的目录结构 3. Boost 使用方式 2.在DEVC++中配置使用boost库的环境 3.在vis ...
- 编译后的boost库命名方式
原文链接:http://www.cnblogs.com/dementia/archive/2009/04/10/1433217.html Boost官网的<Geting Started On W ...
- boost库之socket 非阻塞/缓冲区大小等属性设置
boost库之socket 非阻塞/缓冲区大小等属性设置 原文:http://blog.csdn.net/byxdaz/article/details/77318219 asio socket 非阻塞 ...
- VS2008下直接安装使用Boost库1.46.1版本号
Boost库是一个可移植.提供源码的C++库,作为标准库的后备,是C++标准化进程的发动机之中的一个. Boost库由C++标准委员会库工作组成员发起,当中有些内容有望成为下一代C++标准库内容.在C ...
- python idle编辑的代码文件拓展名是_Python IDLE编辑器打开后缀名为.py的文件
原博文 2020-04-08 17:56 − 在Windows操作系统下默认使用Python自带的IDLE编辑器打开后缀名为.py的文件. 1. win+R打开运行 2. 输入regedit,确定 3 ...
- c++ Boost库之boost::bind学习
刚开始学c++,就看boost库其实有点小小的不情愿. 团队要求必掌握的Boost库: boost::bind boost::function boost::Signals2 学习前奏:在写关于coc ...
- Visual Studio 2015 编译与使用Boost库进行文件与目录的操作
前言 1.Boost库是一个功能非常强大的跨平台开源C++库,我这里只演示如何在win7下visual studio 2015里做boost库的boost::filesystem来操作文件.目录. 2 ...
最新文章
- docker 数据共享,数据复制
- 欺诈网站都注重用户体验!你,还在等什么?!
- 《食堂远程下单系统》需求规格说明书
- 【运筹学】单纯形法总结 ( 单纯形法原理 | 单纯形法流程 | 单纯形表 | 计算检验数 | 最优解判定 | 入基变量 | 出基变量 | 方程组同解变换 ) ★★★
- 以云战“疫”,这次阿里云又让人们惊了……
- 什么是机器学习?有哪些分类?怎样上手开发?终于有人讲明白了
- 【openMV】openMV之测距
- RHCE认证考试时间是什么时候?
- matlab 二进制写入文件,在Matlab中读取/写入二进制文件
- 【语义分割专题】语义分割相关工作--SegNet
- 考研数学模拟题要选哪个当真题做
- 显微镜下的大明——第一个故事
- 达梦数据库 防火墙设置
- 隐马尔科夫模型——学习算法
- 一些基础知识:脑科学、神经科学、心理学
- 网址出现dns_probe_finished_no_internet
- JDK8 到 JDK17 各个版本的重要特性一览
- 记录微机大作业-----流水灯
- 在c语言求30角的正弦值,正弦及30度角的正弦值.doc
- ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.
热门文章
- 中国重汽微服务管理_干货 | 微服务架构下 Spring Cloud OAuth2 通用权限管理系统
- 关于Date类型、时间戳格式转换方法
- python实现蒙特卡洛算法_用Python实现基于蒙特卡洛算法小实验
- markdown 本地链接_记录笔记、markdown工具推荐
- 《计算机应用基础实训教程》,《计算机应用基础实训教程》修改稿(文).doc
- 如何在WPF 表格中嵌套按钮
- c语言自动存储,C语言存储分类
- offer上不写具体薪资合理吗_拿着OFFER当白菜?职场菜鸟不带这么玩的
- mysql可重复读实验_Mysql可重复读测试
- java设置类的字符格式_java类---与格式化相关的类