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 线程库的更多相关文章

  1. Boost线程库学习笔记

    一.创建一个线程 创建线程 boost::thread myThread(threadFun); 需要注意的是:参数可以是函数对象或者函数指针.并且这个函数无参数,并返回void类型. 当一个thre ...

  2. BOOST 线程完全攻略 - 基础篇

    http://blog.csdn.net/iamnieo/article/details/2908621 2008-09-10 12:48 9202人阅读 评论(3) 收藏 举报 thread多线程l ...

  3. BOOST 线程完全攻略 - 扩展 - 可被关闭的线程类

    本文假设读者已经基本了解boost线程库的使用方法. boost是个开源工程,线程这一块也在不断完善之中,到现在这个阶段,boost::thread仅仅实现了一个完美的技术框架,但是读者在实际使用中会 ...

  4. BOOST 线程完全攻略

    1 创建线程 首先看看boost::thread的构造函数吧,boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象: (2)explicit thre ...

  5. Boost线程详解

    一.创建一个线程 创建线程 boost::thread myThread(threadFun); 需要注意的是:参数可以是函数对象或者函数指针.并且这个函数无参数,并返回void类型. 当一个thre ...

  6. Boost 线程学习笔记

    Bolg转载自:http://www.cnblogs.com/lvdongjie/p/4447193.html 一: 创建线程 #include <iostream> #include & ...

  7. 【C/C++】BOOST 线程完全攻略 - 基础篇

    C++多线程开发是一个复杂的事情,mfc下提供了CWinThread类,和AfxBeginThread等等函数,但是在使用中会遇到很多麻烦事情,例如线程之间参数传递的问题,我们一般都是把参数new一个 ...

  8. Boost::thread库的使用

    阅读对象 本文假设读者有几下Skills [1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念. [2]熟悉C++开发,在开发工具中,能够编译.设置boost::thread库. ...

  9. c++ 封装线程库 2

    1.2线程回收: 首先得知道线程的两个状态: Joinable Detached 简单理解,如果一个线程是joinable的状态,那么这样的线程,就必须使用pthread_join来回收,否则程序结束 ...

随机推荐

  1. python 3.6 + robotFramework自动化框架 环境搭建、学习笔记

    ################################################################# #author: 陈月白 #_blogs: http://www.c ...

  2. TCP/IP三次挥手,四次断开(精简)

    很多协议都是基于TCP/IP协议的基础之上进行工作的,可能我们了解这些原理近期看来并无实际作用,因为它不像如一些web服务器配置一样,配置了我就可以使用,就可以提供服务. 但是从我们长远发展角度来看, ...

  3. Vue框架之组件与过滤器的使用

    一.组件的使用 局部组件的使用 ​ 打油诗: 1.声子 2.挂子 3.用 var App = { tempalte:` <div class='app'></div>` }; ...

  4. 前端HTML基础和head部分

    一.SOCKET服务器与浏览器交互 CS模式 -->  BS模式 CS模式逐渐向BS模式转移,底层都是socket客户端 浏览器给服务器发送请求 --> 服务器收到请求 --> 服务 ...

  5. wxpython中设置radiobox相关使用

    #coding=utf-8 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self,None,-1, ...

  6. -bash: zip: command not found提示解决办法

    -bash: zip: command not found是因为liunx服务器上没有安装zip命令,需要安装一下即可linux安装zip命令:apt-get install zip 或yum ins ...

  7. 源码安装缺少configure文件

    源代码中没有configure的软件安装方法 今天下载了一个旧版的GeoIP软件包,解压以后发现代码包中没有configure文件,现在这这里记录一下安装遇到的问题 网上大部分GeoIP下载地址已经失 ...

  8. Django REST framework+Vue 打造生鲜电商项目(笔记五)

    一.viewsets实现商品详情页接口 (1)商品详情页只需要多继承一个类(mixins.RetrieveModelMixin)就可以了,(它的功能就是展示商品详情) class GoodsListV ...

  9. 怎么才能零基础彻底学会Java

    21世纪进入信息时代,信息科技给人类的生产和生活方式带来了深刻的变革,信息产业已成为推动国家经济发展的主导产业之一,Java编程语言作为含金量极高的一门IT技术,很多人希望从事这个行业,那么想学好Ja ...

  10. Hdu 4312-Meeting point-2——哈夫曼距离与切比雪夫距离

    题意 从 $n$ 个点中选择一点,使得其他点到其的切比雪夫距离最小($0 < n \leq 1e5$). 分析 定理:$(x_1, y_1)$ 与 $(x_2, y_2)$ 的曼哈顿距离等于 $ ...