Je suis un débutant en python. Lorsque j'ai essayé le code d'échantillon Python suivant avec la bibliothèque de types sur Mac OS X Lion:
Traceback (most recent call last): File "cprintf.py", line 2, in <module> cdll.LoadLibrary("libc.so.6") File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 431, in LoadLibrary return self._dlltype(name) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 353, in __init__ self._handle = _dlopen(self._name, mode) OSError: dlopen(libc.so.6, 6): image not found
3 Réponses :
os x utilise ".dylib" pour l'extension de ses objets partagés, vous devez donc utiliser "libc.dylib". p>
Les bibliothèques partagées sur Mac OS X ont tendance à avoir l'extension .dylib code> au lieu de
.so code>. Dans ce cas,
/usr/lib/libc.dylib code> est ce que vous voulez tellement charger
libc.dylib code>. P>
Une solution de plate-forme croisée serait d'utiliser quelque chose comme ceci:
import platform import ctypes libc = ctypes.cdll.LoadLibrary("libc.{}".format("so.6" if platform.uname()[0] != "Darwin" else "dylib")) # or ctypes.CDLL("libc.{}".format("so.6" if platform.uname()[0] != "Darwin" else "dylib"))