Ich habe eine C++ Bibliothek repeater.so
, die ich von Python in Linux die folgende Art und Weise laden:Python ctypes Laden nicht dynamische Bibliothek auf Mac OS X
import numpy as np
repeater = np.ctypeslib.load_library('librepeater.so', '.')
Allerdings, wenn ich kompilieren die gleiche Bibliothek auf Mac OS X (Snow Leopard, 32 Bit) und erhalten repeater.dylib
, und dann den folgenden in Python ausführen:
import numpy as np
repeater = np.ctypeslib.load_library('librepeater.dylib', '.')
ich erhalte die folgende Fehlermeldung:
OSError: dlopen(/mydir/librepeater.dylib, 6): no suitable image found. Did find:
/mydir/librepeater.dylib: mach-o, but wrong architecture
Muss ich etwas anderes tun, um eine dynamische Bibliothek in Python unter Mac OS X zu laden?
Mit 'file' gelang der Trick: Ich habe die Architektur in den Compilereinstellungen an die Python-Installation angepasst und jetzt funktioniert es. Vielen Dank! – nolk
Haben Sie das von Apple gelieferte Python verwendet? Wenn ja, könnten Sie wie vorgeschlagen im 32-Bit-Modus laufen. Aber auch das Neukompilieren funktioniert. Aus diesem Grund werden Binärdateien unter OS X in der Regel als Multi-Architecture-Dateien (z. B. i386, x86_64 und ppc) erstellt, sodass die resultierenden Dateien, Bibliotheken oder Anwendungen auf den verschiedenen von der Betriebssystemebene unterstützten Maschinen verwendet werden können . –