Windows7下,VS2013安装boost库
1. 先从官网(www.boost.org)下载最新版的BOOST源码,我下的值最新版本boost_1_62_0.7z,下载下来之后,大小为68.5M
2. 编译源代码(操作很简单)
(本机下载的是boost_1_62_0.7z)
(1)先把源代码放在目标目录下,例如
F:\InstallProgramingSoftware\boost_1_62_0
(2)在源代码文件夹中找到bootstrap.bat,双击运行即可,过一会之后,源代码文件夹中新增了2个文件b2.exe, bjam.exe
(3)先编译b2.exe
用b2.exe生成64位的lib,指令为:
b2 stage --toolset=msvc-12.0 architecture=x86address-model=64 --stagedir=".\lib\vc12_x64" link=staticruntime-link=static threading=multi debug release
用b2.exe生成32位的lib 我编译的是32位的,编译时间有点小长,指令如下:
b2 stage --toolset=msvc-12.0 architecture=x86--stagedir=".\lib\vc12_x86" link=static runtime-link=staticthreading=multi debug release
3. 测试是否安装成功
1) 新建VS2013的WIN32控制台应用程序,选择空项目,添加一个C++源文件,
测试代码为:
#include<iostream>
#include<boost/thread/thread.hpp>
void hello()
{
std::cout<< "Hello world, I'm a thread!"<< std::endl;
}
int main()
{
boost::threadthrd(&hello);
thrd.join();
}
2) 在项目-》属性-》VC目录中
包含目录,添加:F:\InstallProgramingSoftware\boost_1_62_0
库目录,添加:
F:\InstallProgramingSoftware\boost_1_62_0\lib\vc12_x86\lib
3)在C++-》常规-》附加包含目录中,添加F:\InstallProgramingSoftware\boost_1_62_0
4)在链接器-》常规-》附加包含目录中,添加F:\InstallProgramingSoftware\boost_1_62_0
点击确定,应用之后,就可以编译运行了。
编译报错:
报错1:boost_1_62_0\boost\type_traits\common_type.hpp(43): fatalerror C1001:编译器中发生内部错误。
错误定位到如下代码段
namespace type_traits_detail
{
template<classT1, classT2, class...T>usingcommon_type_fold =common_type_t<common_type_t<T1, T2>,T...>;
} //namespace type_traits_detail
解决方法如下,将VS2013升级到update5。升级方法可参考:http://jingyan.baidu.com/article/3c48dd349a9616e10be3583d.html
(其中,更新包安装器下载地址为:
www.microsoft.com/zh-cn/download/details.aspx?id=48129)
按照这个过程,在更新的过程中会报错,提示:无法找到包源。
建议下载一份完整的cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso 文件,离线安装。
我用的是http://msdn.itellyou.cn/网站的安装包,下载地址为
ed2k://|file|cn_visual_studio_ultimate_2013_with_update_5_x86_dvd_6816649.iso|5567336448|641555AD6472A98923B29CC5E371461E|/
下载后直接安装即可,已装有VS2013的,这次安装过程会把原来的覆盖掉.
VS2013包含Update5的版本安装好后,打开我上面建的测试工程,编译生成。
报错2:
1>LINK : fatal error LNK1104: 无法打开文件“libboost_thread-vc120-mt-gd-1_62.lib”
这个是由于多线程调用的问题,修改如下图:
将多线程调试 (/MDd)改为多线程调试(/MTd),保存即可。