VS2010 Boost编译安装(转载)

把项目从VS2008搬到VS2010的时候,导入原来的编译好的boost库居然连接失败,

提示:LINK : fatal error LNK1104: 无法打开文件“libboost_system-vc100-mt-1_47.lib”  错误

网上找答案,才知道不同的编译器所使用的boost库编译命令是不同的:

输入bjam --toolset=msvc-10.0 --build-type=complete stage 开始编译(VS2010的)
(如果是VS2005, 则为msvc-8.0;如果是VS2008, 则为msvc-9.0) 编译N久后终于完成了,
编译后的lib和dll在stage文件夹下,导入工程需要把include加上boost根目录,library目录加上stage文件夹

以下为转载内容:

“简单的转载他人,而没有深入的学习,简直就是对他人的不负责!对看到我这篇文章而去浪费1个多小时编译的朋友说声抱歉!”

1.下载安装包boost 1_46_0
http://www.boost.org/users/news/version_1_46_0
选择下载 windows 或 unix 版本

2.解压缩到D:\boost 目录下

3.编译bjam

(1)从vs2010的工具菜单进入命令提示窗口(单击“开始”按钮,指向“所有程序”,指向“Microsoft Visual Studio 2010”,指向“Visual Studio tools(工具)”,然后单击“Visual Studio 2010 command prompt(命令提示)” 
(2)cd到D:\boost\boost_1_46_0下执行bootstrap.bat,然后,会在D:\boost\boost_1_46_0\下生成bjam.exe

4.设定编译环境(如果想去掉编译警告需要修改)  
修改user-config.jam (D:\boost\boost_1_46_0\tools\build\v2\user-config.jam) 的MSVC configuration
# MSVC configuration

# Configure msvc (default version, searched for in standard locations and PATH).
# using msvc ;

using msvc : 10.0 : : <compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE <compileflags>/D_SCL_SECURE_NO_DEPRECATE <compileflags>/D_SECURE_SCL=0 ;

5.將目录cd到D:\boost\boost_1_46_0\下执行 
    (1) 编译boost库 
        bjam stage --without-python --toolset=msvc-10.0 --build-type=complete --stagedir="D:\boost\boost_1_46_0\bin\vc10" (这一步需要等待很长时间,大概一个小时左右……)

下面详细解释一下每个参数的含义:
stage/install:stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。

toolset:指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)等。

without/with:选择不编译/编译哪些库。

stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,如VS2010对应的是D:\boost\boost_1_46_0\bin\vc10,否则都生成到一个目录下面,难以管理。

build-dir:编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(D:\boost\boost_1_46_0)下,目录名为bin.v2(删掉),等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。

link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。

runtime-link:动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。一般link只选static的话,只需要编译2种组合即可,即link=static runtime-link=shared和link=static runtime-link=static。

threading:单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

debug/release:编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。

运行完后(弹出输入提示符) 
6.设定vs2010环境。(注:在2010环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径 )

修改环境变量:$(BOOST):  D:\boost\boost_1_46_0
Tools -> Options -> Projects and Solutions -> VC++ Directories 
在Library files加上$(BOOST)\bin\vc10\lib

在Include files加上$(BOOST)

使用举例:

#include<boost\thread.hpp>

此时,不用包含库文件,boost的auto-link机制将会自动帮我们包含对应的静态lib。也就是说,boost默认是以静态方式链接的,这样我们的工程属性最好也设为Multi-threaded (Debug)。如果想使用dll动态方式链接,需要预先定义宏:

#define BOOST_ALL_DYN_LINK

同样,此时boost也会默认帮我们包含对应的lib。如果不想使用boost提供的auto-link机制,或者对它的自动链接不太放心的话(其实大可不必担心),可以预先定义宏:

#define BOOST_ALL_NO_LIB

然后使用以下方法链接:

#pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或

#pragma comment(lib, "boost_thread-vc100-mt.lib")

这两个lib其实是一样的,实在不明白boost编译时为什么每个库都要复制一份,难道是因为后者在升级boost版本后不用改代码?另外还有一个比较有用的宏:

#define BOOST_LIB_DIAGNOSTIC

它可以让VC在编译时的output窗口中输出程序具体链接了哪些boost库以及链接顺序。

关于boost的auto-link机制,详细可以看看boost\config\auto_link.hpp里的代码,很容易可以读懂,并且值得我们学习。

VS2010 Boost编译安装(转载),布布扣,bubuko.com

时间: 2024-10-24 05:45:27

VS2010 Boost编译安装(转载)的相关文章

ubuntu下boost编译安装

ubuntu下boost编译安装 boost 安装 1.依赖安装 apt-get install mpi-default-dev libicu-dev python-dev python3-dev libbz2-dev zlib1g-dev 2.访问boost官网下载boost最新版本 3.解压下载文件,例如下载文件在~/Downloads下 cd ~/Downloads tar --bzip2 -xvf boost_1_58_0.tar.bz2  4.准备安装 cd boost_1_58 ./

VS2010下编译安装DarwinStreamingServer5.5.5

源码下载链接:http://dss.macosforge.org/源码版本: 5.5.5版本电脑环境:visual studio2010,window 7 x64系统.用VS2010打开WinNTSupport文件夹下的.dsw工程,全部转换vs2010. 使用vs2010编译的遇到一些问题和解决方法:(1)          提示:winsock2某些函数重定义.方法:DarwinStreamingSrvr6.0.3-Source\CommonUtilitiesLib\OSHeaders.h(

mysql5.7.11编译安装以及修改root密码小结

系统是cenos6.7 64位的,默认mysql5.7.11下载到/usr/local/src,安装目录在/app/local/mysql目录下,mysql数据放置目录/app/local/data.mysql从5.1后采用cmake方式编译安装,所以要先编译安装cmake工具,也可以采用yum方式安装cmake.从mysql5.7开始编译安装需要boost库的支持,所以也要下载boost库 #wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-

Centos7中编译安装MySQL(mysql-5.7)

MySQL 是一个真正的多线程.多用户的SQL数据库服务,凭借其高性能.高可靠和易于使用的性能,成为服务器领域中最受欢迎的开源数据库系统.为了确保数据库的功能的完性.可定制性,本篇文章将采用源代码编译的方式安装mysql数据库系统 实验环境 系统:CentOS-7-x86_64(ip:192.168.75.103) 使用软件:boost_1_59_0.mysql-5.7.17 安装实验环境 yum -y install gcc gcc-c++ ncurses ncurses-devel biso

VS2010 编译安装boost库

实践是最好的办法..学习C++,想试试线程,然后打算用boost库,结果boost库编译差点吓到我..没看到比较完整的安装教程..一直耽搁.今天动手.完成了.方法记录如下:1.下载boost从boost官网( http://www.boost.org )上下载最新的boost版本,现在最新是1.49版本,解压到自定义目录(我解压到了D:/program files,最终的目录结构是D:\Program Files\boost_1_49_0) 2.编译安装 在D:\Program Files\bo

linux下编译安装boost库

转载:http://www.cnblogs.com/oloroso/p/4632848.html linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4.安装boost库到指定目录 5.测试一下 代码 编译运行 先看一下系统环境 Linux o-pc 3.19.0-22-generic #22-Ubuntu SMP Tue Jun 16 17:15:15

Ubuntu 14.04 编译安装 boost 1.58

简介 Boost is a set of libraries for the C++ programming language that provide support for tasks and structures such as linear algebra, pseudorandom number generation, multithreading, image processing,regular expressions, and unit testing. It contains

linux, windows编译安装 boost库 (boost 1.56)

要用到 boost库,基础设施建设...做个记录 1.0  linux : 系统环境 [email protected]:~# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS" [email protected]-B85M-DS3H:~# uname -a Linux melos1305-

Boost库编译安装

一.Boost库介绍         Boost库是一个经过千锤百炼.可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一.Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容.在C++社区中影响甚大,其成员已近2000人. Boost库为我们带来了最新.最酷.最实用的技术,是不折不扣的“准”标准库. Boost库中比较有名的几个库: (1)Regex,正则表达式库: (2)Spirit,LL parser framework,用C