Boost 编译链接

简介:

头文件就是库

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






     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1958390,如需转载请自行联系原作者


相关文章
|
关系型数据库 MySQL Linux
[玩转Linux] 安装部署Frp
[玩转Linux] 安装部署Frp
904 0
[玩转Linux] 安装部署Frp
|
编译器
(9)Qt中信号与槽重载的解决方案
本文介绍了在Qt中处理信号与槽重载问题的三种解决方案:使用函数指针、Qt提供的QOverload类和Qt4的宏方式。
806 3
AutoJs Pro 7.0.4-1 实战教程 ---火热持续更新中
AutoJs Pro 7.0.4-1 实战教程 ---火热持续更新中
1026 0
|
机器学习/深度学习 数据采集 数据挖掘
使用Python实现智能食品消费趋势分析的深度学习模型
使用Python实现智能食品消费趋势分析的深度学习模型
362 18
|
7月前
|
人工智能 JSON 安全
一文了解智能体协作的2大核心技术:MCP与A2A
本文由产品专家三桥君介绍了AI智能体协作中的两项关键技术——MCP(模型上下文协议)和A2A(智能体协作协议)。MCP作为智能体的"操作工具箱",支持安全调用外部工具和资源;A2A则提供智能体间的"语言与组织能力",实现异构智能体的发现与协同。三桥君通过应用场景分析,展示了这两项技术在跨云协作、汽车维修服务链等领域的实践价值,并指出它们将推动智能体技术向更高效的协作方向发展。
907 0
|
自动驾驶 物联网 5G
|
NoSQL 数据可视化 Linux
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
这篇文章提供了在CentOS 7上安装Redis的详细步骤,包括上传Redis安装包、解压安装、编译、安装、备份配置文件、修改配置以支持后台运行和设置密码、启动Redis服务、使用客户端连接Redis、关闭Redis服务、解决Redis Desktop Manager图形化工具连接失败的问题、设置Redis开机自启动,以及Redis服务的启动和停止命令。
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
|
人工智能 数据可视化 数据挖掘
我的私人AI助理 | 办公小浣熊
【8月更文挑战第1天】如何利用AI智能化办公工具来快速实现表格数据分析,数据趋势预测,帮助管理者做出重大决策等内容
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
790 0