9
votes

Mac OS X Lion Python CDLL CDLL Erreur Lib.SO.6: Image introuvable

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


0 commentaires

3 Réponses :


4
votes

os x utilise ".dylib" pour l'extension de ses objets partagés, vous devez donc utiliser "libc.dylib".


0 commentaires

18
votes

Les bibliothèques partagées sur Mac OS X ont tendance à avoir l'extension .dylib au lieu de .so . Dans ce cas, /usr/lib/libc.dylib est ce que vous voulez tellement charger libc.dylib .


0 commentaires

2
votes

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"))


0 commentaires