boost 线程库
http://www.boost.org/
Boost的安装
step1.从www.boost.org下载boost库
step2 在 tools\build\jam_src目录下 运行build.bat来生成jam
step3 设置环境变量(后面的%PATH%要加)
PATH=%boost的绝对路径%\tools\build\jam_src\bin.ntx86;%PATH%
PATH=%boost的绝对路径%;%PATH%
For Visial Studio 6.0
SET MSVC_ROOT="VC6的安装路径"
SET VISUALC="VC6的安装路径"
Example:
SET MSVC_ROOT="c:\Program Files\Microsoft Visual Studio\VC98"
For Visual Studio.net
SET VC7_ROOT="vs.NET安装路径"
Example:
SET VC7_ROOT="C:\Program Files\Microsoft Visual Studio .NET\VC7"
For Visual Studio.net 2003
SET VC71_ROOT="vs.NET2003安装路径"
Example:
set VC71_ROOT="C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7"
step 4 编译boost库
bjam "-sTOOLS=%编译器%"
Visual Studio 6.0 %编译器%=msvc
Visual Studio .NET %编译器%=vc7
Visual Studio .NET 2003 %编译器%=vc-7_1
在Windows下 Build Boost线程库
作者:伐木工
Boost库中许多都是在.hpp中实现的,只要包含路径就可以直接就拿来使用。但是仍然有一些需要build为目标库才能够使用,包括Python,正则表达式和多线程库。
折腾了几天,终于将Boost的多线程库搞定了,现在就将我得方法写出来,希望能给遇到麻烦的朋友一些参考。
环境
下面是我的一些安装路径,在安装过程中需要根据实际情况调整:
操作系统:Win2000
VC6: F:\Microsoft Visual Studio\VC98
BOOST: F:\boost_1_27_0
安装Jam
Build Boost线程库需要使用工具Boost.Jam。工欲善其事,必先利其器。现在先来看看如何安装Jam。
命令行:
F:\boost_1_27_0> set VISUALC=""F:\Microsoft Visual Studio\VC98""
F:\boost_1_27_0> set JAM_TOOLSET=VISUALC
F:\boost_1_27_0\tools\jam_src>nmake -f bulids\win32-visualc.mk
说明:
首先是设置环境变量VISUALC和JAM_TOOLSET。VISUALC中有两个双引号是为了能够识别空格。如果你的VC安装路径不含空格就不必加上双引号了: set VISUALC=F:\visual\VC98。
接着就是使用nmake命令编译了。不同的操作系统和不同的开发工具对应不同的mk文件,都在tools\jam_src\builds\目录下。
如果你使用的VC7的话就会有问题,由于编译过程中要使用到advapi32.lib这个文件,VC6中是在vc98\lib\目录下,而VC7是在platformsdk\lib\,这样就会找不到路径。由于没有仔细研究Jam,不知道在哪里修改这个路径,只好请大家自己动手了。
如果不想让系统的环境变量变得杂乱不堪,可以用set VISUAL=命令将变量清除。
完成之后,就可以在\tools\build\jam_src下看见一个新的目录,bin.ntx86,其中就包含了jam.exe。
Build
现在该开始创建Boost线程目标库了。
命令行:
f:\boost_1_27_0>set Path=%PAHT:~0%;F:\boost_1_27_0\tools\build\jam_src\bin.ntx86
f:\boost_1_27_0> set VISUALC="F:\Micors~1\VC98"
f:\boost_1_27_0> jam -sBOOST_ROOT=. -sTOOLS=msvc
说明:
首先将jam.exe的路径加入Path变量中。
接着设置VISUALC,这里和安装Jam时不同,请注意,用的DOS文件名。
最后就是执行jam,-sBOOST_ROOT=.表示Boost的根目录是当前目录,-sTOOLS=msvc指明了工具名称,这些名称都是特定的,具体可以访问boost网站查询。
build需要花些时间,可能还会有不少错误,但可以不必管他。
完成之后,就会发现\libs\thread\build\bin\目录下多了多了两个文件夹,libboost_thread和libboost_threadmon,其中就可以找到完成lib文件和dll文件。
使用
首先在VC中加入路径:
tools->option中Directories属性页中加入:
F:\BOOST_1_27_0\LIBS\THREAD\BUILD\BIN\LIBBOOST_THREADMON\MSVC\RELEASE\RUNTIME-LINK-DYNAMIC\THREADING-MULTI
F:\BOOST_1_27_0\LIBS\THREAD\BUILD\BIN\LIBBOOST_THREAD\MSVC\RELEASE\RUNTIME-LINK-DYNAMIC\THREADING-MULTI
在工程中加入lib文件:
在project->setting中link属性页加入使用的lib:libboost_thread.lib libboost_threadmon.lib
定义BOOST_HAS_THREADS宏,不然就会有如下错误:Thread support is unavailable!
选择多线程运行库
在project->setting->C/C++->Code Generation中Use run-time library下拉框中选Multithreaded DLL
好了,现在就可以体会Boost线程库带给我们的全新感受了。
boost 线程库的更多相关文章
- Boost线程库学习笔记
一.创建一个线程 创建线程 boost::thread myThread(threadFun); 需要注意的是:参数可以是函数对象或者函数指针.并且这个函数无参数,并返回void类型. 当一个thre ...
- BOOST 线程完全攻略 - 基础篇
http://blog.csdn.net/iamnieo/article/details/2908621 2008-09-10 12:48 9202人阅读 评论(3) 收藏 举报 thread多线程l ...
- BOOST 线程完全攻略 - 扩展 - 可被关闭的线程类
本文假设读者已经基本了解boost线程库的使用方法. boost是个开源工程,线程这一块也在不断完善之中,到现在这个阶段,boost::thread仅仅实现了一个完美的技术框架,但是读者在实际使用中会 ...
- BOOST 线程完全攻略
1 创建线程 首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象: (2)explicit thre ...
- Boost线程详解
一.创建一个线程 创建线程 boost::thread myThread(threadFun); 需要注意的是:参数可以是函数对象或者函数指针.并且这个函数无参数,并返回void类型. 当一个thre ...
- Boost 线程学习笔记
Bolg转载自:http://www.cnblogs.com/lvdongjie/p/4447193.html 一: 创建线程 #include <iostream> #include & ...
- 【C/C++】BOOST 线程完全攻略 - 基础篇
C++多线程开发是一个复杂的事情,mfc下提供了CWinThread类,和AfxBeginThread等等函数,但是在使用中会遇到很多麻烦事情,例如线程之间参数传递的问题,我们一般都是把参数new一个 ...
- Boost::thread库的使用
阅读对象 本文假设读者有几下Skills [1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念. [2]熟悉C++开发,在开发工具中,能够编译.设置boost::thread库. ...
- c++ 封装线程库 2
1.2线程回收: 首先得知道线程的两个状态: Joinable Detached 简单理解,如果一个线程是joinable的状态,那么这样的线程,就必须使用pthread_join来回收,否则程序结束 ...
随机推荐
- Android状态栏和导航栏
1.隐藏状态栏或导航栏 View decordView = getWindow().getDecorView(); /*SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI ...
- Wireshark解密HTTPS数据流
如果是chrome浏览器的数据流 直接配置”SSLKEYLOGFILE“就可以解密了. 实现过程: 1.配置系统环境变量 变量名:SSLKEYLOGFILE 变量值:随意指定一个存储路径,以便chro ...
- centos7 配置yum源
简单粗暴方法: 1.首先在本机上测试 ping www.baidu.com 是否通,不通的话配置网卡ip.dns等. 2.进入yum路径下: cd /etc/yum.repos.d/ 3.下载repo ...
- linux-修改树莓派分辨率
直接在树莓派下编辑 使用命令行来编辑配置文件 sudo nano /boot/config.txt 并在config.txt文件的最后加上以下代码即可 max_usb_current=1 hdmi_g ...
- sed进阶教程
寻址规则 常规寻址 如果没有指定地址,那么命令将应用于每一行. 如果只有一个地址,那么命令应用于与这个地址匹配的任意行. 如果指定了由逗号分隔的两个地址,那么命令应用于匹配第一个地址(不包括第一个地址 ...
- 【恐怖的数组模拟】Secret Poems - HihoCoder - 1632
Secret Poems - HihoCoder - 1632 图一 图二 Following the order indicated by arrows, you can get “THISISAV ...
- 云计算(9)--Gossip:multicast problem
Gossip/Epidemic ptotocol 解决的问题是multicast problem Gossip 协议是电脑之间的通信协议,受启发与现实社会的流言蜚语.现代分布式系统通常用gossip协 ...
- Jenkins 参数化构建(Git Parameter)
由于我们在测试过程中,可能需要在多个测试环境跑用例,这个时候就需要jenkins参数化了. Jenkins参数化一般常用的有两种方式:Choice和String Parameter两种 (1)Choi ...
- Selenium常用API的使用java语言之7-控制浏览器操作
(六)控制浏览器操作 1.控制浏览器窗口大小 有时候我们希望能以某种浏览器尺寸找开,访问的页面在这种尺寸下运行.例如可以将浏览器设置成移动端大小(480* 800),然后访问移动站点,对其样式进行评估 ...
- vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法
不知道有没有童鞋出现过全局安装vue-cli是成功的,但是创建项目时命令行报了很多错误,如下 本来是需要按照提示依次切换到项目文件夹,再npm run dev 即可完成项目创建并启动的,但是又报了如下 ...