Estoy intentando interoperar con la biblioteca de ImageMagick en Mono en una Mac. Instalé la biblioteca de ImageMagick con MacPorts y he verificado que el archivo libMagickWand.dylib existe en el directorio /opt/local/lib. También he creado un enlace suave a ese archivo en el directorio /usr/local/lib.DllNotFoundException con DllImport en Mono en Mac: arquitectura incorrecta
aquí está mi declaración DllImport:
[DllImport("libMagickWand", EntryPoint = "MagickWandGenesis")]
static extern void WandGenesis();
Aquí es mi App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<dllmap dll="libMagickWand" target="/opt/local/lib/libMagickWand.dylib" />
</configuration>
Y, en la llamada a WandGenesis();
, consigo un DllNotFoundException
, con el mensaje 'libMagickWand'.
He leído this page y creo que estoy siguiendo todas las reglas. ¿Hay algo más que pueda probar?
Actualización:
me encontré con el .exe MONO_LOG_LEVEL = depuración. Aquí está la información pertinente:
Mono: DllImport error loading library 'dlopen(/opt/local/lib/libMagickWand.5.dylib, 9):
no suitable image found.
Did find: /opt/local/lib/libMagickWand.5.dylib: mach-o, but wrong architecture'.
arquitectura equivocada: Estoy con Snow Leopard en modo de 32 bits y siempre tienen. Instalé ImageMagick con MacPorts e instalé Mono con el paquete Mac de mono-project.com. ¿Qué se habría compilado con una arquitectura diferente?
Actualización:
Creo que he encontrado mi problema:
MacBook-Pro:lib ken$ lipo -info libMagickWand.5.dylib
Non-fat file: libMagickWand.5.dylib is architecture: x86_64
Actualizar:
... pero sigo teniendo problemas. Parece que no puedo entender cómo compilar ImageMagick con la arquitectura i386. Cuando trato de hacerlo con banderas, se queja de otras bibliotecas compiladas como de 64 bits.
Ver mi respuesta actualizada. –