[英]DllNotFoundException with DllImport in Mono on Mac: wrong architecture
我正試圖在Mac上與Mono中的ImageMagick庫互操作。 我使用MacPorts安裝了ImageMagick庫,並驗證了文件libMagickWand.dylib是否存在於目錄/ opt / local / lib中 。 我還在/ usr / local / lib目錄中創建了一個指向該文件的軟鏈接。
這是我的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'。
我已閱讀此頁面 ,我認為我遵循所有規則。 還有什么我可以嘗試的嗎?
更新:
我使用MONO_LOG_LEVEL = debug運行.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位模式下運行Snow Leopard並且總是有。 我在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位的庫。
更新:
Mac OS X上的Mono是32位(至少通常,您可以通過mono --version
來確認)並且您嘗試使用64位二進制文件進行鏈接,這是不可能的。 您必須提供32位二進制(或使用64位單聲道)。
即使只有庫的文件名在目標中並且庫已正確放置(或設置了DYLD_LIBRARY_PATH),您是否有錯誤? 在這種情況下,請提供使用MONO_LOG_LEVEL = debug執行的mono輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.