加载DLL';Python中的s

加载DLL';Python中的s,python,c,module,extending,Python,C,Module,Extending,我遵循在这里找到的指南: 用于创建python的C扩展。但是,当我在构建该模块后尝试运行任何python程序时,例如列出的第一个或mandelbrot.py(在页面末尾列出)。我在行libc=ctypes.CDLL(“libc.dylib”,ctypes.RTLD\u GLOBAL”)上得到了错误 错误是: Traceback (most recent call last): File "cos.py", line 5, in < module > libc = ctypes.CD

我遵循在这里找到的指南:

用于创建python的C扩展。但是,当我在构建该模块后尝试运行任何python程序时,例如列出的第一个或mandelbrot.py(在页面末尾列出)。我在行
libc=ctypes.CDLL(“libc.dylib”,ctypes.RTLD\u GLOBAL”)上得到了错误

错误是:

Traceback (most recent call last):
File "cos.py", line 5, in < module >
libc = ctypes.CDLL("libc.dylib", ctypes.RTLD_GLOBAL)
File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
OSError: libc.dylib: cannot open shared object file: No such file or directory
回溯(最近一次呼叫最后一次):
文件“cos.py”,第5行,在
libc=ctypes.CDLL(“libc.dylib”,ctypes.RTLD_全局)
文件“/usr/lib/python2.7/ctypes/_init__.py”,第365行,在_init中__
self.\u handle=\u dlopen(self.\u名称,模式)
OSError:libc.dylib:无法打开共享对象文件:没有此类文件或目录

我正在使用Linux,所以我不确定这是否是问题所在。如果是,我将如何在Linux上实现这一点?我知道dll是Windows引用共享对象的方式。但是语法会改变吗?在GNU/Linux上,cos()函数位于一个名为libm.so的库中。因此,您需要将“libc.dylib”替换为“libm.So”。

在显示这样的回溯时,将它们放在代码块中以避免此问题。考虑到将回溯放在代码块中是非常明显的,我应该这样做。我一定是工作忙得忘了。对不起,对不起,我是个白痴,我应该在哪里替换那个文件呢?libc.dylib通常位于哪里?获取libm的干净副本最可靠的方法是什么?不,你不应该替换系统上的任何文件。只需将代码更改为ctypes.CDLL(“libm.so”,ctypes.RTLD_GLOBAL),而不是ctypes.CDLL(“libc.dylib”,ctypes.RTLD_GLOBAL)。