芝麻杂记

来源:互联网 发布:郑智化水手知乎 编辑:程序博客网 时间:2024/04/27 21:22

【写的是芝麻大的小事情】

Get boost

 

春节期间有个愿望就是看看boost,写几行代码学习下。选择了boost.asio,想熟悉了之后和ACE库(比如Proactor framework)做一下比较。可惜生性慵懒,放假期间一直忙于测试腾讯的小游戏,所以没有做这件事情。上班前一天终于得闲,有功夫折腾了。

 

懒得自己编译boost库了,去boostpro上下载比自己编译来的快。下载了boost 1.37版本的multi-thread DLL (dbg & rel)。编译代码后发现链接错误说是找不到库libboost_system-vc80-mt-gd-1_37.lib, 这个库是boost.system的静态库。我打算用动态库,于是修改boost/config/user.hpp:

 

// #define BOOST_ALL_DYN_LINK

 

去掉//。boost 看到这个宏定义后会自动连接动态库,否则默认会使用静态链接。

 

在网上看到有人也遇到我一样的问题,提出的方法是将文件boost_signals-vc80-mt-gd-1_37.lib重命名成libboost_system-vc80-mt-gd-1_37.lib,这样做肯定是不合适的。上边修改boost/config/user.hpp的方法才是正解。

 

通过连接之后发现了新的问题 - 程序初始化的时候出错 Application failed to initialize properly。Google一番后得出结论:VS 2008安装时破坏了VS 2005中CRT的manifest,解决办法呢?第一, 可以尝试重新安装VS 2005的运行时;第二,在我的环境中编译boost。我选择了第二个方法,尽管编译boost很费时。

 

编译完成后,一切ok。打完收工!