【发布时间】:2021-12-23 05:49:03
【问题描述】:
我最近正在使用 swig 为 python 构建一个 C 扩展。
一开始,我跑了:
swig -python example.i
然后它生成example.py & example_wrap.c
我跑了之后:
gcc -c example.c example_wrap.c -I D:/path_to_python/Python/include
好的,那么它生成了对象 example.o & example_wrap.o
我想制作一个共享对象文件并运行后:
gcc -o example.dll -s -shared example.o -Wl,--subsystem,windows
它生成了example.dll。
我将example.dll的扩展名重命名为example.pyd。然后将example.pyd和example.py分别复制并粘贴到Python\DLLs和Python\Lib文件夹。
直到一切顺利。
但是当我打开python.exe 并写import example 时会出现错误。它说:
Dynamic module does not define module export function(PyInit_example).
我尝试了各种方法,但没有成功。我想从.dll 生成.pyd。
我用过:
-Windows 10
-Python310
-GCC MinGW 64
我感谢那些提供帮助的人。
【问题讨论】:
-
最终名称应为
_example.pyd(带下划线)。你import example加载example.py,然后加载import _example。