Tengo una biblioteca de C++ repeater.so
que puedo cargar desde Python en Linux de la siguiente manera:Python no ctypes cargar la biblioteca dinámica en Mac OS X
import numpy as np
repeater = np.ctypeslib.load_library('librepeater.so', '.')
Sin embargo, cuando compilo la misma biblioteca en Mac OS X (Snow Leopard, 32 bits) y obtener repeater.dylib
, y luego ejecute el siguiente en Python:
import numpy as np
repeater = np.ctypeslib.load_library('librepeater.dylib', '.')
me sale el siguiente error:
OSError: dlopen(/mydir/librepeater.dylib, 6): no suitable image found. Did find:
/mydir/librepeater.dylib: mach-o, but wrong architecture
¿Tengo que hacer algo diferente para cargar una biblioteca dinámica en Python en Mac OS X?
El uso de 'file' hizo el truco: modifiqué la arquitectura en la configuración del compilador para que coincida con la instalación de python y ahora funciona. ¡Gracias! – nolk
¿Estaba usando el Python suministrado por Apple? De ser así, podría haber ejecutado el modo de 32 bits como se sugiere. Pero recompilar funciona también. Esta también es la razón por la que los binarios en OS X generalmente se crean como archivos de arquitectura múltiple (por ejemplo, i386, x86_64 y ppc) para que los archivos, libs o aplicaciones resultantes se puedan usar en los diversos tipos de máquinas compatibles con el nivel del sistema operativo . –