我得到了其他两个问题的相同错误: 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)
我可以访问我的共享库的功能.
任何想法如何解决这个问题?谢谢.
我是一名盲人程序员,我正在尝试开发一个应用程序来自动检索Winamp当前播放歌曲中的歌词,并以一种可访问的方式呈现给屏幕阅读器.我正在使用accessible_output,一个使得活动屏幕阅读器与用户交谈的过程更容易的lib.你可以在这里找到它:https: //pypi.python.org/pypi/accessible_output/0.7.5#id3 它需要屏幕阅读器中的DLL才能工作.在我的测试中,NVDA屏幕阅读器,它需要NVDA32controller.dll.当从命令行运行时,它运行良好,但在使用py2exe创建.exe文件后,它找不到dll,因此屏幕阅读器不再说话了...任何想法如何解决这个问题?我查看了lib的源代码,也许lib正在寻找的路径在从命令行执行时正常工作,但是当它是.exe文件时,它会改变......但我不知道为什么.也许我应该添加另一条路径,但它应该是什么路径?