簡體   English   中英

在Mac上的Mono中使用DllImport進行DllNotFoundException:錯誤的體系結構

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM