头文件就是库

使用者最常问的问题就是“我该怎么安装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

技巧1

可以通过在VS预处理器中添加BOOST_LIB_DIAGNOSTIC,在编译的output窗口中输出程序具体链接了哪些boost库以及链接顺序

技巧2

可以通过修改源码boost/config/user.hpp中,取消// #define BOOST_ALL_NO_LIB的注释,重新编译Boost源码,关闭Boost自动链接

在如下一种情况下需要关闭自动连接功能:因为asio自动连接了system,data_time和regex库,其实平常只用到了system库,而data_time和regex,如果不使用deadline_timer和asyn_read_until之类的东西的话,是不用连接的.

命名规则

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。

boost 链接出错无法打开libboost_thread-vc140-mt-sgd

第一个链接说明,当选择什么样子的运行时库,程序在编译的时候,就会去调用相应编译时期指定的版本,比如s代表的是运行时静态库,gd代表的是调试模式,当出现无法打开上面的情况下,说明放在指定目录下的boost编译库可能是动态库,跟目标的不一致,因此需要调整匹配上

“多线程(/MT)”: release版本多线程静态库

需要使用  libboost_regex-vc90-mt-s-1_44.lib

“多线程调试(/MTd)”:debug版本多线程静态程库

需要使用 libboost_regex-vc90-mt-sgd-1_44.lib

“多线程 DLL(/MD)”: release版本多线程动态库

需要使用

静态boost 库连接

libboost_regex-vc90-mt -1_44.lib

动态boost 库连接, 需要在引入库前加上“lib”,

运行需要带上对应的dll

boost_regex-vc90-mt-1_44.lib  à在引入库前加上“lib”

boost_regex-vc90-mt-1_44.dll

“多线程调试 DLL(/MDd)”: debug版本多线程动态库

需要使用

静态boost 库连接

libboost_regex-vc90-mt-gd-1_44.lib

动态boost 库连接, 需要在引入库前加上“lib”,

运行需要带上对应的dll

boost_regex-vc90-mt-gd-1_44.lib  à在引入库前加上“lib”

boost_regex-vc90-mt-gd-1_44.dll

http://www.cnblogs.com/bluedoctor/p/6236905.html

http://blog.csdn.net/xucuiping_/article/details/5979532

转载于:https://blog.51cto.com/fengyuzaitu/1958390

Boost 编译链接相关推荐

  1. 【vcpkg】POCO库编译链接总结

    文章目录 导读 开发环境 POCO 与 Boost 编译过程 POCO库实战 编写测试代码 配置依赖目录 引入头文件和库 编译中遇到的问题 参考资料 导读 上一篇说了<boost编译链接> ...

  2. vs2010 编译linux,VS2010 Boost编译安装

    2.解压缩到D:\boost 目录下 3.编译bjam (1)从vs2010的工具菜单进入命令提示窗口(单击"开始"按钮,指向"所有程序",指向"Mi ...

  3. 易语言静态连接器提取_易语言静态编译链接器切换工具

    使用说明 将exe程序和"链接器目录配置.ini"文件,复制到易语言安装目录的"tools"文件夹下 并且对"链接器目录配置.ini"进行修 ...

  4. 反编译与反汇编、C++编译过程,包括预编译--汇编--编译--链接

    参考:C/C++程序编译流程(预处理->编译->汇编->链接) - ProLyn - 博客园 反汇编和反编译的区别_代码小卒_新浪博客 反汇编与反编译: 汇编:是把汇编源程序转变为目 ...

  5. GNU ARM汇编--(二)汇编编译链接与运行

    GNU的汇编器是GNU Tools的一部分,可以用来ARM的汇编语言源代码编译为二进制文件.关于GNU汇编器的介绍可以搜索<GNU Assembler Manual>.这里我们只是做一个简 ...

  6. Linux环境下gcc编译链接库-lz -lrt -lm -lc都是什么库?

    编译链接库:-lz -lrt -lm -lc都是什么库 -lz      压缩库(Z) -lrt     实时库(real time):shm_open系列 -lm     数学库(math) -lc ...

  7. VC如何在编译链接程序过程中在输出窗口看到链接的顺序

    VC如何在编译链接程序过程中在输出窗口看到链接的顺序 具体操作:选择VC菜单Project->Settings->Link页,然后在Project Options的Edit栏中输入/ver ...

  8. VC++编译链接原理与过程

    简单编译链接过程 源文件先被预处理,分别编译,头文件不参与编译过程,生成目标文件,在生成可执行文件

  9. Gcc编译链接及常用选项总结

    转载文章:http://www.franktly.com 前言 GNU CC(简称Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object- C等语言编写的程序.Gcc ...

最新文章

  1. SDH/E1/T1/E3/T3/STM/TDM相关名词介绍
  2. mysql 修改表id值_修改数据库中表的id
  3. boost::mpi模块在序列化数据上测试 any_source
  4. spring 获取url参数
  5. vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次。
  6. .htaccess必须以ASCII模式上传
  7. WiFi生成二维码卡片共享源码
  8. springcloud工作笔记107---Springboot中MyBatis 自动转换 map-underscore-to-camel-case=true 开启驼峰命名映射
  9. Django之forms组件使用
  10. 给自己记录下申请免费域名的过程
  11. [C语言编程入门]完数的判断
  12. 老服务器上安装windows server 2016
  13. 估值调整 - 凸性调整
  14. 【Git/GitHub/VSCode】Git提交时使用EMOJI表情、在VS Code中使用emoji commit
  15. eclipse怎么调字体
  16. 12306登录python_基于Python3的12306登录实现
  17. 如何用计算机装B,计算机专业装逼经验(转)
  18. Xcode菜单及常用快捷键大全
  19. 农业银行面试计算机专业类知识,中国农业银行面试经验
  20. MySQL取别名(应该取有意义的别名)

热门文章

  1. oracle创建自增
  2. 安装SQL Server 2012示例数据库
  3. CCNA学习笔记--路由器的基本配置
  4. 谷歌Nexus 3开售时间曝光
  5. 高德地图多边形覆盖物添加、获取、删除
  6. PYTHON1.day01
  7. 区块链100讲:EOS环境安装和智能合约部署实战
  8. 《数字逻辑设计与计算机组成》一3.3 加法器
  9. hdu 3068 最长回文(manacheramp;最长回文子串)
  10. 使用pg_stat_statement监控pgsql遇到的问题