2012-01-28 14 views
8

Mac'te Mono'da ImageMagick kitaplığı ile birlikte çalışıyorum. ImageMagick kütüphanesini MacPorts ile kurdum ve libMagickWand.dylib dosyasının /opt/local/lib dizininde var olduğunu doğruladım. Ayrıca, bu dosyaya /usr/local/lib dizininde yumuşak bir bağlantı oluşturdum. WandGenesis(); çağrısına, ben mesaj ile, bir DllNotFoundException olsun,Mac'te Mono'daki DllImport ile DllNotFoundException: yanlış mimari

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <dllmap dll="libMagickWand" target="/opt/local/lib/libMagickWand.dylib" /> 
</configuration> 

Ve 'libMagickWand':

[DllImport("libMagickWand", EntryPoint = "MagickWandGenesis")] 
static extern void WandGenesis(); 

İşte benim App.config var:

İşte benim Dllımport ifadesi.

this page okudum ve tüm kuralları takip ettiğimi düşünüyorum. Denediğim başka bir şey var mı?

Güncelleme:

Ben MONO_LOG_LEVEL = hata ayıklama ile .exe koştu.

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'. 

yanlış mimarisi: Ben 32 bit modunda Snow Leopard çalıştıran ve her zaman var ediyorum İşte ilgili bilgidir. ImageMagick'i MacPorts ile kurdum ve Mono'yu mono-project.com'dan Mac paketi ile kurdum. Farklı bir mimari ile ne derlenmiş olurdu?

Güncelleme:

benim sorunu bulduk:

MacBook-Pro:lib ken$ lipo -info libMagickWand.5.dylib 
Non-fat file: libMagickWand.5.dylib is architecture: x86_64 

Güncelleme:

... ama yine yaşıyorum konular. ImageMagick i386 mimarisi ile nasıl derleneceğimi anlayamıyorum. Bayrakları kullanarak yapmaya çalıştığımda, 64-bit olarak derlenmiş diğer kitaplıklar hakkında şikayetçi olur.

+0

Güncellenmiş yanıtımı görün. –

cevap

7

Güncelleme:

Mono Mac OS X 32 bit (en azından genellikle sen mono --version ile teyit edebiliriz) ile mümkün değildir 64bit ikili ile bağlantı çalışıyoruz. 32 bit ikili (veya 64 bit Mono) kullanmanız gerekir.


sadece kütüphanenin dosya adı hedefi olduğunu ve kütüphane uygun şekilde yerleştirilmiş (veya DYLD_LIBRARY_PATH seti) bile hatayı var mı? Böyle bir durumda lütfen MONO_LOG_LEVEL = hata ayıklaması ile çalıştırılan mono çıkışını sağlayın.

+1

Teşekkürler. Onu MONO_LOG_LEVEL = hata ayıkla çalıştırdım ve biraz bilgi aldım. Orijinal sorumu güncelleyeceğim. – ken