DllNotFoundException mit DllImport in Mono auf Mac: falsche Architektur

8

Ich versuche, mit der ImageMagick-Bibliothek in Mono auf einem Mac zu interagieren. Ich habe die ImageMagick-Bibliothek mit MacPorts installiert und überprüft, dass die Datei libMagickWand.dylib im Verzeichnis / opt / local / lib vorhanden ist. Ich habe auch eine weiche Verbindung zu dieser Datei im Verzeichnis / usr / local / lib erstellt.

Hier ist meine DllImport-Anweisung:

%Vor%

Hier ist meine App.config:

%Vor%

Und beim Aufruf von WandGenesis(); erhalte ich eine DllNotFoundException mit der Nachricht 'libMagickWand'.

Ich habe diese Seite gelesen und denke, dass ich alle Regeln befolge. Gibt es noch etwas, das ich ausprobieren kann?

Aktualisierung:

Ich habe die .exe mit MONO_LOG_LEVEL = debug ausgeführt. Hier ist die relevante Information:

%Vor%

falsche Architektur : Ich betreibe Snow Leopard im 32-Bit-Modus und habe immer. Ich habe ImageMagick mit MacPorts installiert und Mono mit dem Mac-Paket von mono-project.com installiert. Was wäre mit einer anderen Architektur zusammengestellt worden?

Aktualisierung:

Ich glaube, ich habe mein Problem gefunden:

%Vor%

Aktualisierung:

... aber ich habe immer noch Probleme. Ich kann nicht herausfinden, wie man ImageMagick mit i386-Architektur kompiliert. Wenn ich dies unter Verwendung von Flags versuche, beschwert es sich über andere Bibliotheken, die als 64-Bit kompiliert wurden.

    
ken 28.01.2012, 21:08
quelle

1 Antwort

7

Aktualisierung:

Mono unter Mac OS X ist 32 Bit (zumindest in der Regel können Sie das mit mono --version bestätigen) und Sie versuchen, eine Verbindung mit einer 64-Bit-Binärdatei herzustellen, was nicht möglich ist. Sie müssen eine 32-Bit-Binärdatei bereitstellen (oder 64-Bit-Mono verwenden).

Haben Sie den Fehler, selbst wenn nur der Dateiname der Bibliothek im Ziel enthalten ist und die Bibliothek entsprechend platziert ist (oder der DYLD_LIBRARY_PATH-Satz)? In diesem Fall geben Sie bitte die Ausgabe von mono an, die mit MONO_LOG_LEVEL = debug ausgeführt wird.

    
konrad.kruczynski 28.01.2012, 22:52
quelle