相关疑难解决方法(0)

python中动态模块的init函数是什么?

我得到了其他两个问题的相同错误: 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)

我可以访问我的共享库的功能.

任何想法如何解决这个问题?谢谢.

c python dll ctype

6
推荐指数
1
解决办法
3066
查看次数

尝试编译扩展类型时出现 CompileError

我正在尝试按照本教程使用 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)

python compiler-errors compilation cython

5
推荐指数
1
解决办法
1792
查看次数

标签 统计

python ×2

c ×1

compilation ×1

compiler-errors ×1

ctype ×1

cython ×1

dll ×1