在 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 编译就可以正常工作了。
我在尝试 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 编译就可以正常工作了。