头文件就是库
使用者最常问的问题就是“我该怎么安装Boost”,这个也是我一开始最关心的问题,Boost这点做的很好,将大部分实现都封装在头文件里,所以对于一些基本的Boost库,其实是不需要安装的,只需要将头文件include到自己的程序里,当然前提是你把Boost的所有用到的头文件都拷贝了一份。
Boost是如何做到这点的?
这是因为Boost的头文件(*.hpp)包含了模板和内联函数,这点随便找一个hpp文件来看你就明白了,所以不需要去静态链接活动态链接二进制lib库了。
不过Boost的某些库还是需要生成二进制的库的,如果你要使用他们,必须编译安装哦,他们是:
Boost.Filesystem
Boost.IOStreams
Boost.ProgramOptions
Boost.Python
Boost.Regex
Boost.Serialization
Boost.Signals
Boost.Thread
Boost.Wave
命名规则
libboost_filesystem-vc80-mt-sgdp-1_42.lib
前缀:统一为lib,但在Windows下只有静态库有lib前缀;
库名称:以"boost一”开头的库名称,在这里是boost_filesystem;
编译器标识:编译该库文件的编译器名称和版本,在这里是-vc80;
多线程标识:支持多线程使用-mt,没有表示不支持多线程;
ABI标识:这个标识比较复杂,标识了Boost库的几个编译链接选项;
s:  静态库标识;
gd:debug版标识;
p:  使用STlport而不是编译器自带STL实现;
版本号:Boost库的版本号,小数点用下画线代替,在这里是1_42;
扩展名:在Windows上是lib,在Linux等类Unix操作系统上是a或者.so。
几个常用宏
#define BOOST_ALL_DYN_LINK
同样,此时boost也会默认帮我们包含对应的lib。如果不想使用boost提供的auto-link机制,或者对它的自动链接不太放心的话(其实大可不必担心),可以预先定义宏:
#define BOOST_ALL_NO_LIB
然后使用以下方法链接:
#pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或
#pragma comment(lib, "boost_thread-vc100-mt.lib")
这两个lib其实是一样的,实在不明白boost编译时为什么每个库都要复制一份,难道是因为后者在升级boost版本后不用改代码?另外还有一个比较有用的宏:
#define BOOST_LIB_DIAGNOSTIC
它可以让VC在编译时的output窗口中输出程序具体链接了哪些boost库以及链接顺序。
加快Boost编译的方法
可以采用预编译头来解决这个问题。

Boost使用几条简单笔记相关推荐

  1. 【Boost】Boost使用几条简单笔记

    头文件就是库 使用者最常问的问题就是"我该怎么安装Boost",这个也是我一开始最关心的问题,Boost这点做的很好,将大部分实现都封装在头文件里,所以对于一些基本的Boost库, ...

  2. 十五年老股民炒股15年,总结感悟至深的八十一条炒股笔记

    炒股的五个阶段,即: 1,无知蛮干阶段:2,进修充电阶段:3,摸索探路阶段:4,归纳成型阶段:5,初见成效阶段. 十五年老股民炒股15年,总结感悟至深的八十一条炒股笔记: 1,我入市三年后,发现我比一 ...

  3. 一条简单的更新语句,MySQL是如何加锁的?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:Java_老男孩 来源:https://urlify.cn/ ...

  4. os-cocos2d游戏开发基础-进度条-开发笔记

     os-cocos2d游戏开发基础-进度条-开发笔记(十)   ios-cocos2d游戏开发基础-游戏音效-开发笔记(九)       ios-cocos2d游戏开发基础-CCLayer和Touch ...

  5. Android原生绘图进度条+简单自定义属性代码生成器

    零.前言 1.感觉切拼字符串是个很有意思的事,好的拼接方式可以自动生成一些很实用的东西 2.本文自定义控件并不是很高大上的东西,目的在于计录自定义控件的书写规范与行文流程 3.建议大家自定义控件时自定 ...

  6. boost::proto模块实现简单的算术表达式求值器的测试程序

    boost::proto模块实现简单的算术表达式求值器的测试程序 实现功能 C++实现代码 实现功能 boost::proto模块实现简单的算术表达式求值器的测试程序 C++实现代码 #include ...

  7. boost::contract模块实现简单queue的测试程序

    boost::contract模块实现简单queue的测试程序 实现功能 C++实现代码 实现功能 boost::contract模块实现简单queue的测试程序 C++实现代码 #include & ...

  8. mysql执行一条语句会加锁吗_一条简单的更新语句,MySQL是如何加锁的?

    看如下一条sql语句: # table T (id int, name varchar(20)) delete from T where id = 10: MySQL在执行的过程中,是如何加锁呢? 在 ...

  9. delete语句与reference约束冲突怎么解决_一条简单的更新语句,MySQL是如何加锁的?...

    看如下一条sql语句: # table T (id int, name varchar(20)) delete from T where id = 10: MySQL在执行的过程中,是如何加锁呢?在看 ...

最新文章

  1. 影像组学视频学习笔记(43)-标准差、标准误及95%置信区间CI、Li‘s have a solution and plan.
  2. linux操作系统学习网站整理(100个)
  3. Jackson注解学习参考
  4. html标签强制转换位置,王老师html零基础学习笔记第4课——样式初始化+类型转化...
  5. IDEA 插件开发入门教程
  6. 当不同公司的产品经理在一块聊天,会聊什么?
  7. Objective--C的Foundation frame之NSMutableDictionary代码
  8. MAGENTO DEBUG
  9. DailyWallpaper v1.02 released
  10. 1997年考研数学一解析pdf
  11. 【测试】详解接口测试(2)- HTTP接口用例设计与测试方法(拿B站练手)
  12. 7-2 打印九九口诀表 (10 分)
  13. jquery仿直播app按钮点赞特效
  14. gbt7714在overleaf中如何把英文作者大写变小写
  15. 程序员真实故事系列 ---阅读书籍计划
  16. SecureCRT 8.5字体配色步骤
  17. [附源码]计算机毕业设计JAVAjsp校园志愿者服务管理系统
  18. sd卡照片清除用什么软件可以找回
  19. 百度关于EMP的探索:落地生产可用的微前端架构
  20. go语言读文件 java读文件_如何从Java中的文本文件逐行读取

热门文章

  1. Spring源码分析前篇
  2. 微服务网关Gateway-PrefixPath讲解
  3. 序列化和反序列化的概述
  4. 案例_文件下载_代码实现
  5. 每天一个Linux命令之ps-查看系统进程信息
  6. Python打印格式化与字符串
  7. Hackthissite realistic 6解密题后的记录
  8. Leveldb二三事
  9. 在 JQuery Mobile 中实现瀑布流图库布局
  10. 找出带环单向链表的环入口(交点)