我在Linux下工作。
a.cpp
(其中有一个函数f
,我在文件顶部做了一个extern "c" {}
声明)。g++ -shared -fPIC -o a.so a.cpp
。a.py
的地方写了ctypes.cdll.LoadLibrary('./a.so')
。如果我实际运行这个文件,那么一切都很好,我可以调用该函数f
。b.py
,里面有import a
。我在该导入行收到错误:dynamic module does not define module export function (PyInit_a)
。我想我需要用一些
__init__
或其他东西来修改导入,但也许还有其他东西。有人知道该怎么办吗?
谢谢!
虽然我不明白为什么,但对我有用的是创建一个子目录
a
,将文件a.py
和a.so
以及一个空的__init__.py
文件放在那里,用ctypes.cdll.LoadLibrary('./a.so')
替换上面的ctypes.cdll.LoadLibrary('./a/a.so')
,并将上面的 import a
替换为 from a import a
。然后就可以了。