编译boost时地址模型错误

zeu*_*300 7 python boost mingw boost-python

我编写了一个混合 Python 3 和 C++ 的程序。我在 Windows 上使用 boost-python 1.62 和 mingw。到目前为止,我已经在许多机器上编译了 C++ python 库,并且它一直运行良好。现在我将源代码提供给一位同事在他的机器上安装,编译失败,mingw 抱怨符号问题和“文件格式无法识别”。

但是,我看到的是以下内容:在我的机器上,b2 在编译开始时报告了这一点:

  • 32 位:无(缓存)
  • 64 位:是(缓存)
  • 手臂:否(缓存)
  • mips1 : 没有(缓存)
  • 电源:否(缓存)
  • sparc : 没有(缓存)
  • x86 : 是(缓存)
  • 支持符号链接:是

在我同事的机器上,它看起来像这样:

  • 32 位:是(缓存)
  • 手臂:否(缓存)
  • mips1 : 没有(缓存)
  • 电源:否(缓存)
  • sparc : 没有(缓存)
  • x86 : 是(缓存)
  • 支持符号链接:是

我很确定问题与他的系统试图编译 32 位代码并试图将现有的 64 位代码链接到它有关。不过,问题是,为什么它首先要尝试编译 32 位代码?机器不到一年,所以肯定是64位的。然而,更重要的问题是,如何说服机器使用 64 位进行编译?

顺便说一下,这是我的 user-config.jam:

using python : 3.6 : C:\\StreamTest\\WinPython-64bit-3.6.6.2\\python-3.6.6.amd64\\python.exe
  : C:\\StreamTest\\WinPython-64bit-3.6.6.2\\python-3.6.6.amd64\\include
  : C:\\StreamTest\\WinPython-64bit-3.6.6.2\\python-3.6.6.amd64\\libs
  : ;
Run Code Online (Sandbox Code Playgroud)

ale*_*nes 2

您的同事肯定正在编译为 32 位,您可以添加-m64强制mingw编译为 64 位的参数(假设您的同事有支持交叉兼容性的版本,即 mingw-w64)

我假设你的同事下载了http://www.mingw.org/但他/她需要:http://mingw-w64.org

来自 mingw.org:

“MinGW 是 GNU 编译器集合 (GCC) 的本机 Windows 端口,具有可自由分发的导入库和头文件,用于构建本机 Windows 应用程序;包括对 MSVC 运行时的扩展以支持 C99 功能。尽管(目前)仅提供 32-位编译器套件,MinGW 的所有软件都将在 64 位 Windows 平台上执行。”

来自 mingw-w64.org:

“Mingw-w64 是原始 mingw.org 项目的改进,旨在支持 Windows 系统上的 GCC 编译器。它于 2007 年对其进行了分叉,以提供对 64 位和新 API 的支持。从那时起,它就得到了广泛的使用和分配。”