首先说下环境,win7,vs2010。

先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版。

按照说明,直接运行“bootstrap.bat”,报“‘cl'不是内部或外部命令”的错误,于是在环境变量中添加了cl.exe的路径——“C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_ia64”。再次运行“bootstrap.bat”,提示找不到“mspdb100.dll”,继续在环境变量中添加了路径——“C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE ”。

继续编译,还是不过,看了下bootstrap.log,提示一些头文件找不到,放弃了之前的思路,不再继续添加环境变量,还是使用vs自带的命令行工具吧,这个工具在启动时会自动设置好各种路径。工具的位置在菜单“工具->visual studio命令提示”(或者在“开始-程序-Micro Visual Studio 2010-Visual Studio Tools-Visual Studio 命令提示),使用这个命令行工具,运行“bootstrap.bat”,bjam.exe编译成功,根据提示,在cmd中继续敲入“.\b2”,boost库编译成功。

接下来要做些试着,在vs2010中,菜单“视图->属性管理器”,随便打开一个c++工程,展开树形结构,有个Microsoft.Cpp.Win32.user 项,在这项中的“vc++目录->库目录”中添加“G:\boost_1_52_0\stage\lib”(我的boost库放在G盘的),在“包含目录”中添加“G:\boost_1_52_0 ”。

大功告成!

后来试着在工程中添加了boost,发现Link的时候始终报无法访问“boost_python-vc100-mt-gd-1_52.lib”。我看了下,各种路径设置都是正确的,而且这个lib文件确实也有,估计是这个lib文件关联的某个文件没有成功加载。

在网上搜索了下,发现直接使用“.\b2”这个选项编译的是有问题的,简单的说,就是各种编译参数没有设置好。

由于我主要是使用boost中与python相关的东西,所以先将“boost_1_52_0\tools\build\v2\user-config.jam”文件打开,在最后一行添加了“using python : 2.7 : d:\\python27 ;”(“d:\\python27”是我python的安装目录),然后用“visual studio命令提示”工具执行了下面的命令“bjam stage toolset=msvc-10.0 variant=debug link=static address-model=32 threading=multi runtime-link=static -s install”命令。由于使用了“install”命令,编译完成后,在C盘生成了“C:/boost”目录,头文件、lib文件、dll文件都在里面。

重新设置了“VC++目录->库目录”,添加“C:\Boost\lib”,“包含目录”添加了“C:\Boost\include\boost-1_52”,然后将“boost_1_52_0\stage\lib”中的两个dll文件copy到了我的程序目录下。

重新编译了工程,成功了。运行了下,也一切正常。

boost真是麻烦啊。

主要参考了下面一篇博文http://china.ygw.blog.163.com/blog/static/68719746201152485054104/

复制在下:

最新的boost库已经发布了1.46.1版本,但是我接触的比较晚,去年才开始接触并使用,第一次使用的是1.43版本,而且当时安装的时候没有进行完全安装(未包含mpi及python,只涉及32位版本)。这几天重新研究了一下完整安装问题,以下针对Windows 7系统(64位)下通过vs2010完整安装boost 1.46.1(32位/64位)进行详细描述。

完整安装boost,需要涉及几个第三方库:

1)Regex所需要的Unicode支持类库---ICU。由于自己是使用C/C++,所以需要icu4c。

2)MPI所需要的类库---Boost的官方站点说需要MPICH或OpenMPI之类的支持,事实上在Windows下总是会提示需要MPIC++,你需要的是Microsoft Cluster Pack SDK,下载并默认安装在C:\ProgramFiles\Microsoft Compute Cluster Pack下。(说明:如果安装Microsoft HPC Pack 2008 SDK或Microsoft Compute ClusterPack时不是装到默认的路径下,那bjam就会找不到mpic++的路径,这时候可以修改一下mpi.jam(在boost_1_46_1\tools\build\v2\tools目录中): local cluster_pack_path_native = "你的路径")。

3)Python所需要的Python语言库---Python

以下先分步描述相关第三库的安装过程:

1)ICU4C

a)当前icu4c最高版本为4.8,下载的源代码包为icu4c-4_8-src.tgz(个人偏向于通过源代码编译生成,这样会更灵活,比如有问题时可以调试);

b)解压icu4c-4_8-src.tgz文件,进入icu\source\allinone子目录,用vs2010打开allinone.sln解决方案;

c)分别按照Win32(32位程序)/x64(64位程序)下的Debug/Release模式进行编译,其Win32的Debug/Release库文件保存于icu\lib目录,x64的Debug/Release库文件保存于icu\lib64目录。需要注意的是:生成相应的Debug/Release库文件后,需要将相应的lib/lib64目录下.dll及.lib文件备份出来,避免编译下一Release/Debug版本时被覆盖;

d)将编译后的Win32/x64的Debug/Release文件(.lib及.dll文件)依次保存好(比如x86/x64目录下的debug/release子目录),并在x86/x64目录下的debug/release子目录下新建include目录,并将icu4c的头文件依次拷贝一份到对应的include目录中(后面编译boost时需要)。

2)MPI

最最简单的方式,直接进入前述地址下载安装即可。

3)Python

当前Python最高版本为3.2,从3.2版本开始有了Windows的安装包(安装后直接有了相应的头文件、库文件等,无需经由代码编译)。在这里要说声抱歉,直接经由代码编译有很多问题,总是编译不过,所以暂时使用安装包,待后面代码编译通过后再使用代码包。(注意,编译32位boost程序时安装32位的python,编译完成后再卸载,然后再安装64位的python,继续进行64位boost的编译,反之亦然)

至此,安装boost所需要的相关第三方库已经准备完成,现在正式开始boost 1.46.1的安装过程:

1)通过boost网站下载最新的boost源代码包boost_1_46_1.tar.gz并解压;

2)用UltraEdit打开boost_1_46_1\boost_1_46_1\tools\build\v2目录下的user-config.jam文件,并在最后增加两行“using mpi ;”(注意,mpi与;之间有一个空格)、“using python : 3.2 : c:\\python32 ;”(注意,3.2与;之间有一个空格,另外,3.2为python的版本号(只需要主版本号与次版本号),c:\\python32为python的安装目录,windows下需要将路径的\符号转换为\\)

3)通过vs2010的“Visual Studio Command Prompt (2010)”(编译32位)、“Visual Studio X64 Win64 Command Prompt (2010)”(编译64位)菜单项进入vs2010命令行,并进入解压后的boost_1_46_1\boost_1_46_1目录;

4)执行bootstrap.bat命令(只需要执行一次即可);

5)x86/x64下的debug/release编译命令分别是:

a)x86 debug
                  bjam --prefix=e:\build\boost\1.46.1\x86\debug stage toolset=msvc-10.0 variant=debug link=shared address-model=32 threading=multi runtime-link=shared -s ICU_PATH=E:\build\icu4c\4.8\x86\debug install

b)x86 release
                    bjam --prefix=e:\build\boost\1.46.1\x86\release stage toolset=msvc-10.0 variant=release link=shared address-model=32 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x86\release install

c)x64 debug
                    bjam --prefix=e:\build\boost\1.46.1\x64\debug stage toolset=msvc-10.0 variant=debug link=shared address-model=64 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x64\debug install

d)x64 release
                    bjam --prefix=e:\build\boost\1.46.1\x64\release stage toolset=msvc-10.0 variant=release link=shared address-model=64 threading=multi runtime-link=shared -sICU_PATH=E:\build\icu4c\4.8\x64\release install
         6)其中,--prefix设置boost安装目录;stage表示只生成库文件(dll与lib文件);toolset指定编译器,vs2010就是msvc-10.0,vs2005/vs2008分别是msvc-8.0与msvc-9.0;variant决定编译什么版本;link决定使用静态库还是动态库,shared是动态库,static是静态库;address-model决定地址长度,即32还是64位程序;threading决定使用单线程(single)还是多线程(multi)库;runtime-link决定是静态(static)还是动态(shared)链接C/C++标准库;-s ICU_PATH设置icu4c的路径;install会生成包含头文件的include目录。

至此,windows 7(64位)系统下使用vs2010完全编译boost 1.46.1完成(含x86/x64的debug与release版本)。

boost在windows下的编译(vs2010)的更多相关文章

  1. ACE在windows下的编译及配置(VS2010)

    ACE在windows下的编译及配置(VS2010) 分类:             -[小西南]-              2013-08-06 16:17     2354人阅读     评论( ...

  2. [转]QGis2.9在windows下的编译以及二次开发包下载

    今天心血来潮,将QGis在github上的代码更新后,又编译了一下.留意到源代码包里面的INSTALL文件有更新,于是本次编译完全基于官方的编译说明.编译过程非常顺利,除了在CMake的第一次conf ...

  3. 原创 C++应用程序在Windows下的编译、链接:第一部分 概述

    本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 cl.exe是windows平台下的编译器,link.ex ...

  4. 【FFmpeg】Windows下FFmpeg编译

    由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类 ...

  5. C++应用程序在Windows下的编译、链接(一)概述

    C++应用程序在Windows下的编译.链接(一)概述 本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 c ...

  6. windows下rabbitmq-c编译(带openssl、无需MinGW)

    因为项目原因,需要使用到rabbitmq的c客户端库.首先,参见上一篇windows下openssl编译,如果已经使用cmake编译过了,则先delete cache(File-Delete Cach ...

  7. Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)

    后记: 由于自己low,没有下载罪行的python3.2导致编译上遇到种种问题,后文可以参考,建议看: <Windows7 VS2015 下编译 PythonQt3.2> https:// ...

  8. Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)探索

    时间:2018年10月20日 笔者最近在做Qt方面的开发工作,需用到脚本程序对程序内部进行扩展,就很自然的想到了PythonQt,下面介绍PythonQt在Windows下的的安装编译心得,水平有限, ...

  9. 设置 Quick-Cocos2d-x 在 Windows 下的编译环境

    http://cn.cocos2d-x.org/tutorial/show?id=1304 设置 Quick-Cocos2d-x 在 Windows 下的编译环境 Liao Yulei2014-08- ...

随机推荐

  1. 我的Python成长之路---第三天---Python基础(9)---2016年1月16日(雾霾)

    一.集合 set和dict类似,也是一组key的集合,但不存储value.由于key不能重复,所以,在set中,没有重复的key. 集合和我们数学中集合的概念是一样的,也有交集,并集,差集,对称差集等 ...

  2. iOS判断字符串是否包含表情字符

    - (BOOL)isContainsEmoji:(NSString *)string { __block BOOL isEomji = NO; [, [string length]) options: ...

  3. linux下I2C驱动

    2C协议规定了主机和从机的概念,在驱动中采用的多是适配器(主机)和设备(从机).首先,i2c规定  Bus    -> Algorithm  算法               Adapter   ...

  4. 17.1.1 How to Set Up Replication

    17.1.1 How to Set Up Replication 17.1.1.1 Setting the Replication Master Configuration 17.1.1.2 Sett ...

  5. poj 2114 Boatherds 树的分治

    还是利用点的分治的办法来做,统计的办法不一样了,我的做法是排序并且标记每个点属于哪颗子树. #include <iostream> #include <cstdio> #inc ...

  6. Android的BUG(一) - HTML 5 播放streaming video造成卡住的问题

    这个bug,是google自带的问题. 和见到的诸多android的疑难问题一样,这又是一个可以归类为 多线程同步/状态机 问题. 问题处在NuPlayer的异步消息的handle中,现象和原因不细说 ...

  7. DH11数字温湿度传感器

    DH11数字温湿度传感器是一种集温度.湿度一体的复合传感器,它能把温度和湿度物理量通过温.湿度敏感元件和相应电路转化成方便计算机.PLC.智能仪表等数据采集设备直接读取的数字量.DHT11由电阻式感湿 ...

  8. IOS SWIFT UITableView 实现简单微博列表

    // // Weibo.swift // UITableViewCellExample // // Created by XUYAN on 15/8/15. // Copyright (c) 2015 ...

  9. 演练5-5:Contoso大学校园管理系统5

    Contoso University示例网站演示如何使用Entity Framework 5创建ASP.NET MVC 4应用程序. Entity Framework有三种处理数据的方式:  Data ...

  10. [置顶] Android4.0中修改挂断键(ENDCALL)的默认行为

    文件: frameworks/base/core/java/android/provider/Setings.java public static final String END_BUTTON_BE ...