boost的编译

第1步:

先从官网(www.boost.org)下载最新版的BOOST源码,如图所示

我这里下的是zip的那个
第2步:
编译源代码(放心.这里是傻瓜式的操作,很容易操作)
(1)先把源代码放在E盘,例如 E:\boost_1_53_0
(2)在源代码中找到一个批处理bootstrap.bat,运行即可
此时会弹出Building Boost.Jam之类,过一会之后,源代码中新增了1个文件bjam.exe
(3)运行bjame.exe即能编译了(花费时间很长,大概20分钟).
问题1:文件大小
下载的boost库80M左右,编译完之后是1.6G,区别是很大.放在磁盘位置大点的地方

 

问题2:库版本
目前我用的是1.46.1的版本,编译出来的是VS2010版本的库,这句话什么意思?
就是说VS2008不能用1.46.1的版本,会报错
1>正在链接...
1>LINK : fatal error LNK1104: 无法打开文件“libboost_thread-vc90-mt-1_46_1.lib”
中间有个VC90,于是我在BOOST库里1个1个的找这个库,发现没有,但是有个VC100
如图所示:1个是VS2008编译的报错.1个是新版BOOST库并没有VC90,只有VC100
不同的版本可能编译出的库名不一样,一定要注意

PS:问题2本人没遇到,如遇到,网上有一种方法可一试:

配置编译环境:
.../boost_1_53_0/tools/build/v2中的user-config.jam文件,最后增加一行:using msvc : 6.0 : D:/Program Files/Microsoft Visual Studio/VC98/Bin/cl ;注意上行的格式,冒号两边一定有空格,最后分号一定有空格(因为c++代码中并没有如此苛刻的格式限制,所以一开始没太注意,总也解决不了错误,最后试着才找到这个原因)。
msvc : 8.0是VS2005
msvc : 10.0是VS2010

安装完后,下面就讨论一下怎么用了
一共2个例子 第1个:怎样使用BOOST库写个线程的Hello World? 第2个怎样使用BOOST库写try,catch?
--->举例1:怎样使用BOOST库写个线程的Hello World?
第1步:新建一个VS2005控制台应用程序,选择空项目->增加一个C++源文件
可以先用
void main()
{}
测试下,可以编译了
第2步:
添加BOOST创建线程的代码

[cpp] view plaincopy

  1. #include <iostream>
  2. #include <boost/thread/thread.hpp>
  3. void hello()
  4. {
  5. std::cout << "Hello world, I‘m a thread!" << std::endl;
  6. }
  7. int main()
  8. {
  9. boost::thread thrd(&hello);
  10. thrd.join();
  11. }

第3步:编译,发现报错

1> hello.cpp
...\hello.cpp(2): fatal error C1083: 无法打开包括文件:“boost/thread/thread.hpp”: No such file or directory
即没有包含BOOST文件与BOOST库的文件,怎样添加,如图所示

包含目录的添加:

库目录的添加:

包含目录添加E:\boost_1_53_0
库目录添加E:\boost_1_53_0\stage\lib
添加完这2个就可以编译运行了.结果如下:

举例2:怎样使用BOOST库写try,catch?感觉try,catch在BOOST中用的顶多的,这里顺便也介绍一下写法
第1步:同举例1一样,新建项目,包含文件与库,一样.这里只是在上面的基础上拷贝了一下代码

[cpp] view plaincopy

  1. #include <iostream>
  2. #include <string>
  3. #include <boost/lexical_cast.hpp>
  4. using namespace std;
  5. int main()
  6. {
  7. //std::cout<<"hello, world!";
  8. string str = "1234t";
  9. try
  10. {
  11. cout << boost::lexical_cast<int>(str) << endl;
  12. }
  13. catch (boost::bad_lexical_cast& e)
  14. {
  15. cerr<<"Bad cast: "<< e.what() << endl;
  16. }
  17. return 0;
  18. }

结果如图:

【转自:http://hi.baidu.com/vc_net/item/3dc5d0d9f07741e955347f45,有较多修改】

时间: 2025-01-14 02:58:42

boost的编译的相关文章

Boost库编译安装

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

boost vc编译

0.下载:http://www.boost.org/ 1.编译b2.exe,bjam.exe. 双击根目录下面的bootstrap.bat文件,生成b2.exe,bjam.exe 如果编译64位需要vs的cmd窗口,如VS2013 x64 Native Tools Command Prompt进入到boost根目录下面运行bootstrap,编译b2.exe,biam.exe. 2.用b2.exe生成64位的lib b2 stage --toolset=msvc-12.0 architectur

boost.python编译及示例

欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46781581 linux编译boost的链接:http://blog.csdn.net/majianfei1023/article/details/46761029 昨天编译安装好boost,今天准备使用boost.python写个python调用c++代码的例子,结果踩了很多坑. 首先贴上代码: 1.student.cpp,一个普通的c++类 #include

boost.python编译及演示样例

欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46781581 linux编译boost的链接:http://blog.csdn.net/majianfei1023/article/details/46761029 昨天编译安装好boost,今天准备使用boost.python写个python调用c++代码的样例,结果踩了非常多坑. 首先贴上代码: 1.student.cpp,一个普通的c++类 #includ

Boost 库编译总结

1. 下载boost库源码,解压缩. 2. 打开vs2010 工具栏tools 下的visual studio command prompt,运行源码目录下的bootstrap.bat,生成bjam.exe,b2.exe.(这两个程序是一样的). 3. 用bjam或b2程序编译boost库,例如: bjam toolset=msvc-10.0 link=shared variant=debug,release threading=multi runtime-link=shared  --with

boost 部分编译

完整编译boost库需要很长时间,而且我们不一定会用到所有的库. 那么如何只编译只需要的库呢? 解压boost源码,进入解压后的目录 ./bootstrap.sh生成bjam ./bjam --build-type=complete --layout=versioned --toolset=gcc --with-thread --with-regex #--with指定所需要的模块 ./bjam install #安装到默认路径下

Boost库编译后命名方式

Boost官网的<Geting Started On Windows>(http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html)提到了Boost库的命名,摘录如下: 以 libboost_regex-vc71-mt-d-1_34.lib 为例: lib 前缀:除了Microsoft Windows之外,每一个Boost库的名字都以此字符串开始.在Windows上,只有普通的静态库使用lib前缀:导入库和DLL

C++开发--在Visual Studio2013中使用boost::split()编译过程中出现error C4996

Visual Studio is being overly cautious.  In debug mode, visual studio uses something called "Checked Iterators".  Pointers are also iterators, but the checking mechanism doesn't work with them.  So when a standard library algorithm is called wit

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