我正在使用以下说明在 Windows 中使用 MinGW 编译 C dll:
"C:\GNAT\2015\bin\gcc.exe" -shared -c -IC:\Python27\include *.c
"C:\GNAT\2015\bin\gcc.exe" -shared -Wall -O3 -IC:\Python27\include -L./ -l dependency_lib -LC:\Python27\libs *.o -o mylib.pyd -lpython27
我在链接过程中遇到了几个这样的错误:
(.text+0x5a2): undefined reference to `_imp__PyExc_TypeError'
(.text+0x69f): undefined reference to `_imp___Py_NoneStruct'
我尝试将 .lib 转换为 .a 但我得到:
/libpython27.a: file format not recognized; treating as linker script
知道我做错了什么吗?非常感谢
最佳答案
看起来 MinGW 编译器需要一个 python27.a 而不是 python27.lib。但是, .lib 的生成方式非常重要 。对我来说,它起作用的唯一方法是:
dlltool --dllname python27.dll --def python27.def --output-lib libpython27.a
注意:gcc 中的 -lpython27 选项必须在最后。
Source
关于python - 使用 MinGW 未定义对 `_imp__PyExc_TypeError' 的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40533566/