学习使用BOOST库总结(应用环境 Windows XP + VC6.0)

来源:互联网 发布:java显示行号 编辑:程序博客网 时间:2024/04/30 00:58


1、下载

从www.boost.org下载boost_1_38_0.zip 和 boost-jam-3.1.17-1-ntx86.zip。
  
2、安装构建工具bjam

解压boost-jam得到bjam.exe,拷贝到path路径中(例如“windows目录”),
就是说在cmd命令环境中执行bjam命令时系统应该能找到bjam.exe可执行文件。

 

3、安装boost库

解压boost_1_38_0.zip到你准备安装boost的路径下,建议选择空间相对充足的分区,解压后将近200M;
例如,我准备安装到c区,于是在c区创建Boost文件夹,并将压缩包其解压到其中,打开C:/Boost/boost_1_38_0
便可以看到一堆文件夹和文件。

 

4、增加环境变量

我的电脑->属性->高级->环境变量,在用户变量中增加环境变量:

BOOST_BUILD_PATH 值为 C:/Boost/boost_1_38_0/tools/build/v2/

 

5、配置编译环境

C:/Boost/boost_1_38_0/tools/build/v2中的user-config.jam文件,最后增加一行:

using msvc : 6.0 : D:/Program Files/Microsoft Visual Studio/VC98/Bin/cl ;

注意上行的格式,冒号两边一定有空格,最后分号一定有空格(因为c++代码中并没有
如此苛刻的格式限制,所以一开始没太注意,总也解决不了错误,最后试着才找到这个原因)。

 

6、创建Hello World!

到这里就可以使用bjam来创建应用程序了,写个hello world,找点成就感吧。
创建文件D:/Test/Boost/hello/hello.cpp(路径可随意,我喜欢把所有练习程序放在一个Test文件夹中,
然后把VC练习放在D:/Test/VC/文件中,GCC练习放在D:/Test/GCC/文件夹中,Boost练习当然要再建一个D:/Test/Boost),hello.cpp内容如下:
//<
#include <iostream>
using namespace std;
int main()
{
 std::cout<<"Hello, World!";
 return 0;
}
//>

在文件夹D:/Test/Boost/hello/中创建名为jamroot的文本文件,内容(下面三行):
# jamfile for project hello

exe hello : hello.cpp ;

install dist : hello : <location>. ;

进入cmd命令行,并进入项目路径:D:/Test/Boost/hello/>

执行编译命令:D:/Test/Boost/hello/>bjam hello;
会在给文件夹下生成bin/msvc-6.0/debug/threading-multi文件夹,并在其中编译生成hello.exe文件

执行安装命令:D:/Test/Boost/hello/>bjam dist;
会将生成的hello.exe文件拷贝到D:/Test/Boost/hello/下

执行Hello World:D:/Test/Boost/hello/>hello;
会看到可爱的Hello, World!

 

7、使用boost库

修改hello.cpp文件如下:

#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
using namespace std;

int main()
{
 //std::cout<<"hello, world!";

 string str = "520";

 try
 {
  cout << boost::lexical_cast<int>(str) << endl;
 }
 catch (boost::bad_lexical_cast& e)
 {
  cerr<<"Bad cast: "<< e.what() << endl;
 }

 return 0;
}

如果就这样编译的话会提示找不到boost/lexical_cast.hpp文件,
需要修改jamroot文件,增加包含boost路径:

# jamfile for project hello

exe hello : hello.cpp : <include>C:/Boost/boost_1_38_0/ ;

install dist : hello : <location>. ;