我得到了与其他两个问题相同的错误: ImportError: dynamic module does not define init function, but it does and Cythoncompiled C extension: ImportError: dynamic module does not define init function
但是他们的解决方案并不相同,对我也不起作用。
我正在尝试在我的 python 程序中调用我用 c 编写的共享库的函数。
我像这样编译了我的共享库:
gcc -shared -Wl,-soname,playfaircrack.so -o playfaircrack.so -fPIC playfaircrack.c scoreText.o
我创建了一个模块,在这个模块中我加载了这个库:
cracker = ctypes.cdll.LoadLibrary('./playfaircrack.so')
但是当我运行代码时,我收到以下错误:
Traceback (most recent call last):
File "playfair.py", line 2, in <module>
import playfaircrack
ImportError: dynamic module does not define init function (initplayfaircrack)
这很奇怪,因为如果我运行 python 解释器并直接调用:
cracker = ctypes.cdll.LoadLibrary('./playfaircrack.so')
我可以访问我的共享库的功能。
任何想法如何解决这个问题?谢谢你。