vs2015安装boost并使用thread库

文章目录

  • 1. 下载并编译对应的Boost版本
    • 备注1: 编译命令详解
    • 备注2:一些示例
  • 2. 在vs2015中测试编译好的boost库
  • 3. 编写多线程测试程序
  • 附:vs2010编译boost thread库
  • 我的命令行

1. 下载并编译对应的Boost版本

Boost的15个库(包括data_time,regex,program_options、test、thread等)必须编译成静态库或动态库后才能使用。对于官网下载的Boost库,需要编译成我们使用的版本才可以供vs调用。

这里以编译供vs2015使用的boost库为例:

  1. 在官网上下载最新boost版本(我选择的是boost_1_66_0)
  2. 下载后解压,以管理员权限Boostrap.bat,会自动在当前目录生成两个文件b2.exe和bjam.exe,其实这两个文件的功能基本一样,新版本推荐使用b2进行编译。
  3. 打开vs2015开发人员命令提示符
    在这里插入图片描述
    输入编译命令,进行编译
b2 stage --toolset=msvc-14.0 --without-python --without-graph --without-graph_parallel --stagedir="D:\boost_1_70_0\vc14_32_release" link=static runtime-link=static  threading=multi release

vs2015安装boost并使用thread库_第1张图片

  1. 等待生成完成(大概需要十几分钟),会在D:\boost_1_66_0\vc14_32_release生成一个lib目录,这个目录下就是boost生成的静态库。
    vs2015安装boost并使用thread库_第2张图片

备注1: 编译命令详解

以上文的命令为例:

b2 stage --toolset=msvc-14.0 --without-python --without-graph --without-graph_parallel --stagedir="D:\boost_1_70_0\vc14_32_release" link=static runtime-link=static  threading=multi release
  • stage:可选install,选stage只生成库(静态库和动态库),install还包含include目录,其实,可以直接用我们下载下来的BOOST包里的boost目录,这个目录和install生成的include目录内容基本一样。所以也就不用了。
  • –toolset=msvc-14.0表示生成msvc14的库,即为供vs2015调用的;(vs2010对应msvc10.0)
  • –without-python --without-graph --without-graph_parallel 表示不生成这些库;
  • –stagedir=“D:\boost_1_66_0\vc14_32_release”(表示存放编译成功的静态库的目录,这个目录是由自己新建的);
  • link=static代表生成静态库,boost一般都生成静态库,如果要生成共享动态库,指定为link=shared;
  • runtime-link=static表示msvc运行时为MT;
  • threading=single|multi 决定使用单线程还是多线程库。
  • release为生成release版本的;
  • address-model=64生成64位的库(如果没有这个属性的话,会默认生成32位的平台库,加入这个选项才能生成64位的DLL。如果运行在VS32位的命令行下需要添加” architecture=x86”)

备注2:一些示例

生成vc14的32位的debug版本的

b2 stage --toolset=msvc-14.0 --without-python --without-graph --without-graph_parallel --stagedir="D:\boost_1_70_0\vc14_32_release" link=static runtime-link=static  threading=multi debug

生成vc14的64位版本库

b2 stage --toolset=msvc-14.0 --without-python --without-graph --without-graph_parallel --stagedir="D:\boost_1_70_0\vc14_32_release" address-model=64 link=static runtime-link=static  threading=multi release

很多网页上教程写的untime-link=shared runtime-link=static threading=multi debug release表示生成的库既可以用于msvc即为MT也可以用于MD,既可以用于debug也可以用于release

2. 在vs2015中测试编译好的boost库

新建一个win32控制台工程。进行工程配置
C/C++ 常规 附加包含目录为:D:\boost_1_66_0

注:编译的时候要注意“附加库目录”和“附加库目录”分别是在“Release”模式下设置的还是“Debug”模式下设置的
vs2015安装boost并使用thread库_第3张图片链接器 常规 附加库目录为:D:\boost_1_66_0\vc14_32_release\lib
C/C++ 代码生成 运行库为:多线程MT(因为上述编译命令指定了runtime-link=static
vs2015安装boost并使用thread库_第4张图片
链接器 常规 附加库目录为:D:\boost_1_66_0\vc14_32_release\lib
vs2015安装boost并使用thread库_第5张图片

3. 编写多线程测试程序

#include
#include
#include
using namespace std;
void mythread()
{
	cout << " hello,thread! " << endl;
}

int main()
{
	boost::function<void()> f(mythread);
	boost::thread t(f);
	t.join();
	cout << " thread is over! " << endl;
	getchar();
	return 0;
}

注:因为我们编译的是vc14的32位的release版本
所以编译选项如下:
在这里插入图片描述
运行程序后得到:
在这里插入图片描述

附:vs2010编译boost thread库

跟之前一样,但是在编译时需要编译thread及date time库(thread链接时需要)

  1. 在命令提示符(cmd.exe)中执行以下两条命令:(VS2010对应msvc10.0
 bjam --toolset=msvc-10.0 --with-date_time stage 
 bjam --toolset=msvc-10.0 --with-thread stage 

stage参数:编译成功后在boost_1_57_0\stage目录下生成相应的lib文件
2.在vs2010中配置boost

(1)属性->VC++目录->包含目录:D:\boost_1_66_0

(2)属性->VC++目录->库目录:D:\boost_1_66_0\stage\lib

3.在vs2010中测试代码就ok

我的命令行

b2 stage --toolset=msvc-10.0 --without-python --without-graph --without-graph_parallel --stagedir="D:\boost_1_66_0\vc10_32_debug" link=static threading=multi debug

你可能感兴趣的:(研究生毕业设计,c++,boost,visual,studio,c++,vs2015)