Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 适用于64位windows的64位版本的Boost_C++_Visual Studio 2008_Boost - Fatal编程技术网

C++ 适用于64位windows的64位版本的Boost

C++ 适用于64位windows的64位版本的Boost,c++,visual-studio-2008,boost,C++,Visual Studio 2008,Boost,是否有适用于VS2008的64位Boost库版本? 还是我必须自己编译一个?如果是这样的话,有没有人有这方面的经验?作为简短的回答: bjam --toolset=msvc-9.0 address-model=64 --build-type=complete 作为一个较长的回答,以下是我在同一层次结构中使用VS.NET 2008 32位和64位boost库的构建说明(我怀疑这是一个常见的用例): 构建win32二进制文件 bjam --toolset=msvc-9.0 --build-type

是否有适用于VS2008的64位Boost库版本? 还是我必须自己编译一个?如果是这样的话,有没有人有这方面的经验?

作为简短的回答:

bjam --toolset=msvc-9.0 address-model=64 --build-type=complete
作为一个较长的回答,以下是我在同一层次结构中使用VS.NET 2008 32位和64位boost库的构建说明(我怀疑这是一个常见的用例):

  • 构建win32二进制文件

    bjam --toolset=msvc-9.0 --build-type=complete stage
    
  • 创建目录lib\win32

  • 将stage\lib的内容移动到lib\win32
  • 删除bin.v2和stage目录
  • 构建x64二进制文件

    bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
    
  • 创建目录lib\x64

  • 将stage\lib的内容移动到lib\x64
  • 删除bin.v2和stage目录

  • 我已经在我的站点上构建了二进制文件:


    编辑2013-05-13:我的版本现在可以直接从中获得(从1.53开始)。

    我为自己编写了一个小脚本,用于为VS2005和VS2008编译所有版本:

    md stage\lib\win32
    md stage\lib\x64
    
    REM Visual Studio 2005
    bjam --toolset=msvc-8.0 --build-type=complete stage
    move /Y stage\lib\* stage\lib\win32\
    
    bjam --toolset=msvc-8.0 address-model=64 --build-type=complete stage
    move /Y stage\lib\* stage\lib\x64\
    
    REM Visual Studio 2008
    bjam --toolset=msvc-9.0 --build-type=complete stage
    move /Y stage\lib\* stage\lib\win32\
    
    bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
    move /Y stage\lib\* stage\lib\x64\
    

    此时,teeks99提供的64位二进制文件(见其他答案)似乎是唯一可用的64位二进制文件。有一段时间,BoostPro还提供了64位二进制文件,但从1.51开始,它们似乎已经过时了

    所以,我们又回到了两个选项:teeks99二进制文件,或者构建您自己的

    我自己构建所需的大部分信息都在这里:

    唯一缺少的是如何让它与免费版本的VisualStudio2010Express一起工作。我在其他地方发现了缺失的部分,经过一些定制,我用于构建boost 1.49.0二进制文件的最终配方是:

    启动VisualC++,并从工具菜单启动VisualStudio命令提示符。

    在控制台窗口中,执行以下操作:

    "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\setenv.cmd"  /Release  /x64
    
    然后在boost目录中:

    bootstrap.bat
    b2  -a  -sBZIP2_SOURCE="C:\bzip2-1.0.6"   -sZLIB_SOURCE="C:\zlib-1.2.5"   --toolset=msvc-10.0  architecture=x86  address-model=64  link=static  --with-date_time  --with-filesystem  --with-serialization  --with-test  --with-thread  --with-system  --with-regex  --with-iostreams  stage
    
    最后一个命令是根据我的需要定制的(只是一些静态链接的库)。

    更新(19.09.2017):为VS2017添加了脚本行。请注意,Boost支持上述特定版本的VS2017编译器。我使用了最新版本(1.65.1)

    我使用此脚本为x64和x86平台构建boost、为VS2017、VS2015和VS2013构建lib和dll、调试和发布:

    md stage\VS2017\x64
    md stage\VS2015\x64
    md stage\VS2013\x64    
    
    b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
    b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release  
    
    b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
    b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release
    
    b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
    b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release
    
    
    md stage\VS2017\win32
    md stage\VS2015\win32
    md stage\VS2013\win32
    
    b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
    b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release
    
    b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
    b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release
    
    b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
    b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release
    
    pause
    

    您可以创建一个
    .bat
    文件并运行它来构建boost二进制文件。

    您还可以指定stage目录,这样就不需要在以下位置复制生成的库:bjam--toolset=msvc-9.0 address model=64--build type=complete--stagedir=lib\x64stage@hkaiser当我尝试将库放在
    lib\x64\lib
    中时,不幸的是构建64时,address model=64不起作用。您需要将路径指向Visual Studio\bin\amd64\cl.exe。否则它将构建32位版本。为此,您可以启动Microsoft SDK命令提示符并使用“setenv/Release/x64”重新定义所有路径。@Budric,您确定吗?它似乎对我很有用,并明确指出即使在构建64位时也要提供32位编译器的路径。如果需要构建32位和64位版本,也可以使用stagedir参数:“bjam--stagedir=./lib_64位地址模型=64工具集=msvc线程=多”和“bjam--stagedir=。/lib toolset=msvc threading=multi”很好,因为BoostPRo(为Boost库提供二进制文件)不提供x64版本。谢谢!有机会发布VS2015(VC++14)吗二进制文件?非常感谢。msvc-14.0二进制文件将在几周后发布1.59版。我下载了他们的x64 1_51安装程序,但是,它包含损坏的系统库存档,而且似乎还有一些其他库是x86(我收到链接器警告)。在切换到teeks99的libs后,一切都正常了。