2012-01-28 62 views
8

我試圖在Mac上與Mono中的ImageMagick庫互操作。我用MacPorts安裝了ImageMagick庫,並且已驗證文件libMagickWand.dylib存在於目錄/opt/local/lib中。我還在目錄/usr/local/lib中創建了該文件的軟鏈接。DllNotFoundException與Mac上的Mono中的DllImport:錯誤的架構

這裏是我的DllImport聲明:

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

這裏是我的App.config:

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

,並在調用WandGenesis();,我得到一個DllNotFoundException,與消息 'libMagickWand'。

我讀過this page,我想我遵循所有規則。還有什麼我可以嘗試嗎?

更新:

我跑了MONO_LOG_LEVEL =調試.exe文件。以下是相關信息:

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

錯誤的體系結構:我運行雪豹在32位模式下,總是有。我使用MacPorts安裝了ImageMagick,並使用mono-project.com中的Mac軟件包安裝了Mono。用不同的體系結構編譯什麼?

更新:

我想我找到了我的問題:

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

更新:

...但我仍然有問題。我似乎無法弄清楚如何用i386架構編譯ImageMagick。當我使用標誌嘗試這樣做時,它會抱怨編譯爲64位的其他庫。

+0

查看我更新的答案。 – 2012-01-28 23:47:22

回答

7

更新:

單在Mac OS X是32位(至少通常情況下,可以確認與mono --version),你試圖用64位二進制這是不可能的鏈接。您必須提供32位二進制文​​件(或使用64位Mono)。


做,即使只有庫文件名是目標和庫適當地放置(或DYLD_LIBRARY_PATH集)你有錯誤?在這種情況下,請提供使用MONO_LOG_LEVEL = debug執行的單聲道輸出。

+1

謝謝。我用MONO_LOG_LEVEL = debug運行它,並得到了一些見解。我會更新我原來的問題。 – ken 2012-01-28 23:26:09

相關問題