【问题标题】:How to build boost 1_59_0 for x64 using MSVC-14.0如何使用 MSVC-14.0 为 x64 构建 boost 1_59_0
【发布时间】:2015-09-12 22:36:17
【问题描述】:

我想使用 Visual Studio 2015(社区)构建 boost 1.59.0。我遵循了文档和this question。具体来说,我做到了:

  1. http://www.boost.org/下载boost 1.59.0
  2. 解压文件(例如“C:\some_dir\boost_1_59_0”)
  3. 打开 VS2015 x64 Native Tools 命令提示符。
  4. where cl检查编译器版本,结果C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe
  5. 进入目录 boost_1_59_0
  6. 调用bootstrap.bat没有报错
  7. 调用b2 toolset=msvc-14.0 address-model=64 --with-python 作为输出的一部分,它会很高兴地报告- 32 bit: yes

当我尝试构建libs\python\example\tutorial 时,它再次报告- 32 bit: yes 并导致错误python34.lib(python34.dll) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'。我将其解释为:python dll 是 x64(已安装),但我的目标是 32 位。

任何提示将不胜感激。

【问题讨论】:

  • 啊,是的,我看到了问题:MSVC。
  • 尝试从C:\Users\<name>\AppData\Local\Temp删除缓存文件:b2_msvc_14.0_vcvarsall_x86.cmdb2_msvc_14.0_vcvarsall_x86_amd64.cmdb2_msvc_14.0_vcvarsall_x86_arm.cmd并重建boost。
  • 这可能看起来微不足道,但是您在构建libs\python\example\tutorial 时是否也指定了address-model=64
  • 我再次尝试删除缓存文件并在构建教程时指定address-model=64。但是,它固执地说 ` - 32 bit: yes`。此外,我尝试使用 mingw-64。使用 mingw-64,一切都可以在 64 位中正常编译。但是,当构建过程尝试运行 python,或者我运行 python 示例时,python 崩溃。但这将是一个不同的问题。
  • 令人困惑的是,32 bit: yes 并不意味着它实际上是在进行 32 位构建;它仅指示您未指定 address-model 时的默认配置。一些信息here。查看bin.v2 中的库输出路径:如果那里有一些address-model-64 目录,那么它很可能是为64 位构建的。

标签: python c++ boost visual-studio-2015


【解决方案1】:

首先以 Administrator 的身份在 START 菜单中运行 VS2015 x86 Native Tools Command Prompt 项,然后转到 cmd 中的 boost 库。

现在执行以下步骤:

  1. 引导
  2. b2 variant=debug,release link=static runtime-link=static address-model=64 toolset=msvc-14.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2010-09-23
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多