我编写了一个混合Python3和C++的程序。我正在使用boost-python 1.62,并在Windows上混合使用。到目前为止,我已经在许多机器上编译了C++ python,而且它一直运行良好。现在,我把源代码提供给一位同事在他的机器上安装,编译失败了,他抱怨符号和“文件格式不被识别”的问题。
不过,我看到的是:在我的机器上,b2在编译开始时报告这一点:
32位: no (cached)
支持: yes
在我同事的机器上,看起来是这样的:
(cached)
我确信问题与他的系统有关,他试图编译32位代码,并试图将现有的64位代码链接到它。问题是,为什么它一开始就试图编译32位代码?这台机器还不到一年,所以它肯定是64位。然而,更重要的问题是,我如何说服机器用64位进行编译?
顺便说一句,这是我的用户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
: ;
发布于 2020-07-28 12:32:36
您的同事肯定是编译为32位的,您可以添加参数-m64
,它应该强制mingw
编译为64位(假设您的同事有一个支持跨兼容性的版本,即mingw-w64)。
我想你的同事下载了http://www.mingw.org/,但他/她需要:http://mingw-w64.org
:mingw.org:
"MinGW是(GCC)的一个本地Windows端口,具有可自由分发的导入库和构建本机Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。尽管(目前)只提供32位编译器套件,MinGW的所有软件都将在64位Windows平台上执行。“
来自mingw-w64.org的:
“明威-W64”是最初的mingw.org项目的一个进步,该项目是为了支持GCC在Windows系统上的编译器而创建的。2007年,为了提供对64位和新API的支持,它对其进行了分叉。自那时以来,它得到了广泛的使用和分发。
https://stackoverflow.com/questions/62930695
复制相似问题