Sto cercando di utilizzare la libreria ImageMagick in Mono su un Mac. Ho installato la libreria ImageMagick con MacPorts e ho verificato che il file libMagickWand.dylib esista nella directory /opt/local/lib. Ho anche creato un collegamento software a tale file nella directory /usr/local/lib.DllNotFoundException con DllImport in Mono su Mac: architettura errata
Ecco la mia dichiarazione DllImport:
[DllImport("libMagickWand", EntryPoint = "MagickWandGenesis")]
static extern void WandGenesis();
Ecco il mio app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<dllmap dll="libMagickWand" target="/opt/local/lib/libMagickWand.dylib" />
</configuration>
E, alla chiamata a WandGenesis();
, ho un DllNotFoundException
, con il messaggio 'libMagickWand'.
Ho letto this page e penso di seguire tutte le regole. C'è qualcos'altro che posso provare?
Aggiornamento:
ho eseguito il file exe con MONO_LOG_LEVEL = debug. Ecco le informazioni pertinenti:
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'.
architettura sbagliato: Io corro Snow Leopard in modalità a 32 bit e sempre avere. Ho installato ImageMagick con MacPorts e ho installato Mono con il pacchetto Mac da mono-project.com. Cosa sarebbe stato compilato con un'architettura diversa?
Aggiornamento:
Credo di avere trovato il mio problema:
MacBook-Pro:lib ken$ lipo -info libMagickWand.5.dylib
Non-fat file: libMagickWand.5.dylib is architecture: x86_64
Aggiornamento:
... ma sto ancora problemi. Non riesco a capire come compilare ImageMagick con l'architettura i386. Quando provo a farlo usando i flag, si lamenta di altre librerie che sono state compilate come 64-bit.
Vedere la mia risposta aggiornata. –