использование python.ctypes с cygwin - PullRequest
4 голосов
/ 30 сентября 2010

Я хочу использовать Python (2.6.5) ctypes с Cygwin, но я не знаю, как загрузить DLL.

Я пробовал различные варианты, такие как

>>> form ctypes import *
>>> cdll.LoadLibrary("/lib/libcairo.dll.a")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/ctypes/__init__.py", line 431, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: Permission denied

1 Ответ

2 голосов
/ 30 сентября 2010

Вы не сможете загрузить библиотеку импорта с помощью модуля Python ctypes; это должна быть настоящая DLL. В качестве примеров я использовал как библиотеку cygwin crypt, так и библиотеку импорта crypt DLL в поздней модели Cygwin на Win7.


Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01)
[GCC 4.3.4 20090804 (release) 1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from ctypes import *
>>> cdll.LoadLibrary('cygcrypt-0.dll')
<CDLL 'cygcrypt-0.dll', handle 380000 at 7ef4564c>
>>>
>>>
>>> cdll.LoadLibrary('libcrypt.dll.a')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/ctypes/__init__.py", line 431, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: Permission denied
...