在 windows 上将 Python 链接到我的 C++ 代码中 - 链接器错误

Linking Python into my C++ code on windows - linker error

我在尝试 link python 到我的 C++ 代码时出错。

这是我收到的错误行:

C:\Python27\libs/libpython27.a(dmmes00855.o):(.idata+0x0): undefined reference to `_head_C__build27_cpython_PCBuild_libpython27_a'

collect2.exe: error: ld returned 1 exit status

对于背景,这是最小的情况:

#include <Python.h>

int main()
{
    Py_Initialize();
}

我正在使用 scons 构建:

import os
env = Environment(ENV = os.environ)
env.Append(CPPPATH = "C:/Python27/include/")
env.Append(LIBPATH = "C:/Python27/libs/")
env.Append(LIBS = "python27")
env.Program("test", "test.cpp")

它生成以下命令:

g++ -o test.o -c -IC:\Python27\include test.cpp
g++ -o test.exe test.o -LC:\Python27\libs -lpython27

编译器是我下载的 Qt 中的 mingw。

g++ 命令没有问题。 显然,这是一个 bug

错误修复版本 2.7.10 当前可用。首先升级到2.7.10

然后你需要用

创建 libpython27.a
gendef.exe python27.dll

dlltool.exe --dllname python27.dll --def python27.def --output-lib libpython27.a

并将其放入C:\Python27\libs

现在用 MinGW 编译就可以正常工作了。