代码之家  ›  专栏  ›  技术社区  ›  OlimilOops

如何在visualstudio2010中使用Boost

  •  360
  • OlimilOops  · 技术社区  · 16 年前

    关于如何在VisualStudio中的空项目中使用Boost库,有什么好的逐步说明?

    13 回复  |  直到 8 年前
        1
  •  515
  •   Community Mohan Dere    9 年前

    Nate's answer

    如果您只使用头文件库,那么您所需要做的就是取消boost下载的归档并设置环境变量。下面的指令只为visualstudio设置环境变量,而不是整个系统。注意你只需要做一次。

    1. C:\boost_1_47_0
    2. 在VisualStudio中创建新的空项目。
    3. 选择(&A);右击 Microsoft.Cpp.<Platform>.user ,然后选择 Properties 打开属性页进行编辑。
    4. 选择 VC++ Directories
    5. 编辑 Include Directories
    6. 如果需要,为您选择的不同平台重复步骤3-6。

    如果您想使用boost中需要构建的部分,但是没有需要外部依赖的特性,那么构建它就相当简单了。

    1. ).
    2. 启动所选平台的visualstudio命令提示符并导航到boost所在的位置。
    3. bootstrap.bat 生成b2.exe(以前称为bjam)。
    4. 运行b2:

      • b2 --toolset=msvc-10.0 --build-type=complete stage ;
      • b2 --toolset=msvc-10.0 --build-type=complete architecture=x86 address-model=64 stage

    去散步/看电影或2/。。。。

    1. Library Directories 节中包含boost库输出的路径(上述示例和说明的默认值为 C:\boost_1_47_0\stage\lib . 如果要使用x86,请先重命名并移动目录;x64并排(例如 <BOOST_PATH>\lib\x86 & <BOOST_PATH>\lib\x64 ).
    2. 如果需要,为您选择的不同平台重复步骤2-6。

    如果你想要可选的组件,那么你有更多的工作要做。这些是:

    • Boost.IOStreams Zlib过滤器
    • Boost.Python版本
    • Boost.Regex ICU支持

    Boost.IOStreams Bzip2过滤器:

    1. C:\bzip2-1.0.6
    2. 按照上面的第二组说明构建boost,但是添加选项 -sBZIP2_SOURCE="C:\bzip2-1.0.6"

    Boost.IOStreams Zlib过滤器

    1. C:\zlib-1.2.5 ).
    2. 按照上面的第二组说明构建boost,但是添加选项 -sZLIB_SOURCE="C:\zlib-1.2.5"

    增强.MPI

    1. 安装MPI发行版,如Microsoft Compute Cluster Pack。
    2. 编辑文件 project-config.jam 在目录中 <BOOST_PATH> 这是运行引导程序的结果。加上一行 using mpi ;
    3. 按照上面第二组说明中的其余步骤构建boost。如果MPI安装的自动检测失败,那么您需要查找并修改适当的构建文件,以便在正确的位置查找MPI。

    Boost.Python版本

    1. 安装Python发行版,如ActiveState的ActivePython。确保Python安装在您的路径中。
    2. 项目-config.jam 在目录中 <

      using python : 2.6 : C:\\Python\\Python26\\python ;

      using python : 2.6 : C:\\Python\\Python26-x64\\python : : : <address-model>64 ;

      请注意,这种显式Python规范当前会导致MPI构建失败。因此,如果您也在构建MPI,那么您将需要使用和不使用规范进行一些单独的构建来构建所有内容。

    3. 按照上面的第二组说明构建boost。

    Boost.Regex ICU支持

    1. 将最新版本的ICU4C库(4.8版)源文件解压缩到您选择的目录中(例如。 C:\icu4c-4_8 ).
    2. <ICU_PATH>\source\allinone
    3. 为调试和;为您选择的平台发布配置。可能有 a problem 使用Visual Studio 2010构建ICU4C的最新版本;发布版本在同一目录中(这是默认行为)。一种可能的解决方法是,先进行一次Build All(比如debug Build),然后在第二个配置中进行一次Rebuild All(例如release Build)。
    4. 完成后可以选择删除源目录。
    5. 按照上面的第二组说明构建boost,但是添加选项 -sICU_PATH="C:\icu4c-4_8" 在步骤5中运行b2时。
        2
  •  158
  •   AStopher    8 年前

    instructions

    • 只有在使用中提到的某个库时才需要这样做 section 3 说明页的(例如,要使用Boost.Filesystem需要编译。)如果您不使用任何一个文件系统,只需解压就可以了。

    这将在下面安装Boost头文件 C:\Boost\include\boost-(version) C:\Boost\lib\i386 . 请注意,库的默认位置是 C:\Boost\lib 但你要把它们放在 i386

    1. 将Boost解压到一个新目录中。
    2. 启动一个32位MSVC命令提示符,并切换到解压缩Boost的目录。
    3. bootstrap
    4. 跑步: b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\i386 install

      • toolset=msvc-11.0
      • 对于Visual Studio 2010,使用 toolset=msvc-10.0
      • 对于Visual Studio 2017,请使用 toolset=msvc-14.1
    5. C:\Boost\include\Boost-(版本) 包含路径。

    6. 添加 C:\Boost\lib\i386版本

    构建64位库

    这将在下面安装Boost头文件 ,以及下面的64位库 C:\Boost\lib\x64 . 请注意,库的默认位置是 C:\Boost\lib x64 如果您计划为多个体系结构构建,请选择目录。

    1. 将Boost解压到一个新目录中。
    2. 启动一个64位MSVC命令提示符,并切换到解压缩Boost的目录。
    3. 跑步: 独自创立
    4. b2 toolset=msvc-12.0 --build-type=complete --libdir=C:\Boost\lib\x64 architecture=x86 address-model=64 install
      • 对于Visual Studio 2012,使用 工具集=msvc-11.0
      • 对于Visual Studio 2010,使用
    5. 添加 C:\Boost\include\Boost-(版本) 包含路径。
    6. 添加 C:\Boost\lib\x64版本
        3
  •  20
  •   Aaron Stainback    16 年前

    您也可以尝试-j%NUMBER\u OF \u PROCESSORS%作为参数,它将使用所有内核。在我的四核上运行的非常快。

        4
  •  15
  •   Uri London    13 年前

    我可以推荐以下技巧:创建一个特殊的 boost.props 文件

    1. 打开属性管理器
    2. 右键单击项目节点,然后选择“添加新项目属性表”。

    此过程的值是boost只包含在您希望显式包含它的项目中。当您有一个使用boost的新项目时,请执行以下操作:

    1. 在项目节点上单击鼠标右键,然后选择“添加现有属性表”。
    2. 选择boost属性表。

    编辑(来自@jim fred的以下编辑):

    助推。道具

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <ImportGroup Label="PropertySheets" />
      <PropertyGroup Label="UserMacros">
        <BOOST_DIR>D:\boost_1_53_0\</BOOST_DIR>
      </PropertyGroup>
      <PropertyGroup>
        <IncludePath>$(BOOST_DIR);$(IncludePath)</IncludePath>
        <LibraryPath>$(BOOST_DIR)stage\lib\;$(LibraryPath)</LibraryPath>
      </PropertyGroup>
    </Project>
    

    它包含一个用于boost目录位置的用户宏(在本例中为D:\boost\u 1\u 53\u 0)和两个其他参数:IncludePath和LibraryPath。一个声明 #include <boost/thread.hpp>

    此boost.props文件可能位于 D:\boost_1_53_0\

        5
  •  13
  •   ST3    12 年前

    你需要Boost的哪些部分?很多东西都是VisualStudio附带的TR1的一部分,因此您可以简单地说,例如:

    #include <tr1/memory>
    
    using std::tr1::shared_ptr;
    

    根据James的说法,这应该也能工作(在C++0x中):

    #include <memory>
    
    using std::shared_ptr;
    
        6
  •  6
  •   mrjoltcola    11 年前

    如果您有4核或6核,请分别使用-j5或-j7。当然不是标准版本nor-j2,除非您确实拥有双核。

    我正在运行一个Sandy Bridge Extreme,主站上的内存为3930K(6核),但在较旧的备份盒上有一个2600k(4核),趋势是我在N+1构建过程中获得了最佳的提升编译时间,其中N是物理核的数量。N+2达到一个收益递减的点,时间就上去了。

    注:已启用超线程,32GB RAM DDR3,三星840 EVO SSD。

    PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j7 --build-type=complete msvc stage }
    
    Days              : 0
    Hours             : 0
    Minutes           : 2
    Seconds           : 51
    Milliseconds      : 128
    Ticks             : 1711281830
    TotalDays         : 0.0019806502662037
    TotalHours        : 0.0475356063888889
    TotalMinutes      : 2.85213638333333
    TotalSeconds      : 171.128183
    TotalMilliseconds : 171128.183
    

    PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j6 --build-type=complete msvc stage }
    
    Days              : 0
    Hours             : 0
    Minutes           : 3
    Seconds           : 2
    Milliseconds      : 809
    Ticks             : 1828093904
    TotalDays         : 0.00211584942592593
    TotalHours        : 0.0507803862222222
    TotalMinutes      : 3.04682317333333
    TotalSeconds      : 182.8093904
    TotalMilliseconds : 182809.3904
    

    PS C:\Boost\boost_1_56_0> measure-command { .\b2 -j8 --build-type=complete msvc stage }
    
    Days              : 0
    Hours             : 0
    Minutes           : 3
    Seconds           : 17
    Milliseconds      : 652
    Ticks             : 1976523915
    TotalDays         : 0.00228764342013889
    TotalHours        : 0.0549034420833333
    TotalMinutes      : 3.294206525
    TotalSeconds      : 197.6523915
    TotalMilliseconds : 197652.3915
    

    -j7 build on 6-core

    配置

    Building the Boost C++ Libraries.
    
    
    Performing configuration checks
    
        - 32-bit                   : yes (cached)
        - arm                      : no  (cached)
        - mips1                    : no  (cached)
        - power                    : no  (cached)
        - sparc                    : no  (cached)
        - x86                      : yes (cached)
        - has_icu builds           : no  (cached)
    warning: Graph library does not contain MPI-based parallel components.
    note: to enable them, add "using mpi ;" to your user-config.jam
        - zlib                     : no  (cached)
        - iconv (libc)             : no  (cached)
        - iconv (separate)         : no  (cached)
        - icu                      : no  (cached)
        - icu (lib64)              : no  (cached)
        - message-compiler         : yes (cached)
        - compiler-supports-ssse3  : yes (cached)
        - compiler-supports-avx2   : yes (cached)
        - gcc visibility           : no  (cached)
        - long double support      : yes (cached)
    warning: skipping optional Message Passing Interface (MPI) library.
    note: to enable MPI support, add "using mpi ;" to user-config.jam.
    note: to suppress this message, pass "--without-mpi" to bjam.
    note: otherwise, you can safely ignore this message.
        - zlib                     : no  (cached)
    

    我注意到64位的构建需要更长的时间,我需要对它们进行相同的比较并进行更新。

        7
  •  5
  •   GaMer13    16 年前

    还有一点注意:如果您想减少编译时间,可以添加标志

        8
  •  5
  •   bhavesh    13 年前

    下面是我如何使用Boost的:

    1. 下载并解压缩Boost库的zip版本。
    2. 等待大约30分钟左右。
    3. 在VisualStudio中创建新项目。
    4. 并添加 增强/级/库
    5. 项目-->属性-->C/C++-->常规-->其他包含目录 促进

    你将能够建立你的项目没有任何错误!

        9
  •  5
  •   andrew    13 年前

    从以下位置下载boost: http://www.boost.org/users/download/ e、 由svn提供

    命令->转到boost目录(“D:\boostTrunk”-在那里签出或下载并提取包): 命令:

    我们在(“D:\boostTrunk”)中创建了bjam.exe 之后: 命令: (大约需要20分钟。)

    之后: 打开Visual studio 2010->创建空项目->转到项目属性->设置:

    Project properties VS 2010

    #include <iostream>
    #include <boost/shared_ptr.hpp>
    #include <boost/regex.hpp>
    
    using namespace std;
    
    struct Hello 
    {
        Hello(){ 
            cout << "Hello constructor" << endl;
        }
    
        ~Hello(){
            cout << "Hello destructor" << endl;
            cin.get();
        }
    };
    
    
    int main(int argc, char**argv)
    {
        //Boost regex, compiled library
        boost::regex regex("^(Hello|Bye) Boost$");
        boost::cmatch helloMatches;
        boost::regex_search("Hello Boost", helloMatches, regex);
        cout << "The word between () is: " << helloMatches[1] << endl;
    
        //Boost shared pointer, header only library
        boost::shared_ptr<Hello> sharedHello(new Hello);
    
        return 0;
    }
    

    资源: https://www.youtube.com/watch?v=5AmwIwedTCM

        10
  •  3
  •   jww avp    9 年前

    Windows安装程序找到 here

    1. 按照安装向导操作直到完成。
    2. 运行visual studio。
    3. 创建一个新的C++项目
    4. 在“项目属性”中的“链接器”下;附加库目录“添加库文件的目录。我的默认版本是C:\local\boost\u 1\u 63\u 0\lib64-msvc-14.0。“lib”后面的数字与构建目标相关(在Visual Studio中为32位或64位),“msvc”后面的数字与Visual Studio版本相关(14.0与Visual Studio 2015相关,但我将其用于2017 Visual Studio)。

        11
  •  2
  •   ecotax    14 年前

    如果您使用的是免费VisualStudioC++ 2010 Express,并设法得到一个编译64位二进制文件,现在想使用该版本来使用Boost LIBARIES的64位版本,您可能会得到32位的库(当然,您的里程可能会有所不同,但在我的机器上,这是一个令人伤心的案例)。

    我可以用以下方法解决这个问题:在上述步骤之间

    1. 启动一个32位MSVC命令提示符,并切换到解压缩Boost的目录。
    2. 运行:引导

    我插入了对“setenv”的调用来设置环境。对于发布版本,上述步骤变为:

    1. 运行:“C:\Program Files\Microsoft SDK\Windows\v7.1\Bin\setenv.cmd”/Release/x64

    我在这里找到了这个信息: http://boost.2283326.n4.nabble.com/64-bit-with-VS-Express-again-td3044258.html

        12
  •  1
  •   AndyUK    12 年前

    1. Download 从这里解压。

    #include <iostream>
    #include <boost/format.hpp>
    
    using namespace std;  
    using namespace boost;  
    
    int main()  
    {  
        unsigned int arr[5] = { 0x05, 0x04, 0xAA, 0x0F, 0x0D };  
    
        cout << format("%02X-%02X-%02X-%02X-%02X")  
                % arr[0]  
                % arr[1]  
                % arr[2]  
                % arr[3]  
                % arr[4]  
             << endl;  
    }  
    

    3.在Visual Studio项目属性中设置附加的Include目录:

    Project Properties

    举个简单的例子:

    How to Install the Boost Libraries in Visual Studio

    Using a subset of the boost libraries in Windows

    How to use the Boost compiled libraries in Windows

        13
  •  0
  •   lakeweb    9 年前

    (How to set environment variables in windows, link at bottom for 7,8,10) BOOST\u ROOT变量似乎不再是常见的地方,它被设置为解压缩BOOST的根路径。

    $(BOOST_ROOT)

    您还可以创建一个BOOST\u LIB变量并将其指向LIB的暂存位置。链接器也是如此->额外的库目录,您将不必更新项目。我用vs10构建了一些旧的东西,用vs14构建了一些新的东西,所以将boost lib的两种风格都构建到了同一个文件夹中。因此,如果我把一个项目从vs10移到vs14,我就不必改变推进路径。

    注意:如果您更改了一个环境变量,它将不会突然在一个开放的VS项目中工作。VS在启动时加载变量。所以你必须关闭VS并重新打开它。