【发布时间】:2015-09-12 22:36:17
【问题描述】:
我想使用 Visual Studio 2015(社区)构建 boost 1.59.0。我遵循了文档和this question。具体来说,我做到了:
- 从http://www.boost.org/下载boost 1.59.0
- 解压文件(例如“C:\some_dir\boost_1_59_0”)
- 打开 VS2015 x64 Native Tools 命令提示符。
- 用
where cl检查编译器版本,结果C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe - 进入目录 boost_1_59_0
- 调用
bootstrap.bat没有报错 - 调用
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.cmd,b2_msvc_14.0_vcvarsall_x86_amd64.cmd,b2_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