我得到了其他两个问题的相同错误: ImportError:动态模块没有定义init函数,但它确实 和 Cython编译了C扩展:ImportError:动态模块没有定义init函数
但他们的解决方案并不平等,也不适合我.
我试图在我的python程序中调用我在c中编写的共享库的函数.
我像这样编译了我的共享库:
gcc -shared -Wl,-soname,playfaircrack.so -o playfaircrack.so -fPIC playfaircrack.c scoreText.o
Run Code Online (Sandbox Code Playgroud)
我创建了一个模块,在这个模块中我加载了这个lib:
cracker = ctypes.cdll.LoadLibrary('./playfaircrack.so')
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时,我收到以下错误:
Traceback (most recent call last):
File "playfair.py", line 2, in <module>
import playfaircrack
ImportError: dynamic module does not define init function (initplayfaircrack)
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为如果我运行python解释器,并直接调用:
cracker = ctypes.cdll.LoadLibrary('./playfaircrack.so')
Run Code Online (Sandbox Code Playgroud)
我可以访问我的共享库的功能.
任何想法如何解决这个问题?谢谢.
我正在尝试按照本教程使用 pyx、pxd 和 cimport 创建和使用扩展类型。
在终端中编译 Cython 文件时,我收到一个我不知道如何纠正的错误:
cdef class CythonClass: 在 pyx 文件中被指示为错误行。
File "/Library/Python/2.7/site-packages/Cython/Build/Dependencies.py", line 1056, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: CythonClass.pyx
Run Code Online (Sandbox Code Playgroud)
我pip install cython在 MacOS Sierra 上使用 Cython 版本 .25(并且也尝试过其他版本,每个版本都安装了)。Python 版本是 2.7.10。
按照建议,我安装了 gcc(Xcode 8.2 的命令行工具),但仍然收到错误消息。
文件内容:
像素:
cdef class CythonClass:
cdef:
list list1
dict d1, d2, d3, d4, d5, d6
Run Code Online (Sandbox Code Playgroud)
pyx:
cdef class CythonClass:
def __init__(self):
self.list1 = []
self.d1 = {}
self.d2 = {}
self.d3 = {}
self.d4 = {} …Run Code Online (Sandbox Code Playgroud)