Tôi đang cố gắng tương tác với thư viện ImageMagick trong Mono trên máy Mac. Tôi đã cài đặt thư viện ImageMagick bằng MacPorts và đã xác minh rằng tệp libMagickWand.dylib tồn tại trong thư mục /opt/local/lib. Tôi cũng đã tạo liên kết mềm tới tệp đó trong thư mục /usr/local/lib.DllNotFoundException với DllImport trong Mono trên Mac: kiến trúc sai
Đây là tuyên bố DllImport tôi:
[DllImport("libMagickWand", EntryPoint = "MagickWandGenesis")]
static extern void WandGenesis();
Dưới đây là App.config của tôi:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<dllmap dll="libMagickWand" target="/opt/local/lib/libMagickWand.dylib" />
</configuration>
Và, cuộc gọi đến WandGenesis();
, tôi nhận được một DllNotFoundException
, với thông điệp 'libMagickWand'.
Tôi đã đọc this page và tôi nghĩ rằng tôi đang tuân thủ tất cả các quy tắc. Tôi có thể thử gì khác không?
Cập nhật:
Tôi chạy .exe với MONO_LOG_LEVEL = debug. Dưới đây là thông tin thích hợp:
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'.
sai kiến trúc: Tôi đang chạy Snow Leopard trong chế độ 32-bit và luôn luôn có. Tôi đã cài đặt ImageMagick với MacPorts và tôi đã cài đặt Mono bằng gói Mac từ mono-project.com. Điều gì sẽ được biên dịch với một kiến trúc khác?
Cập nhật:
Tôi nghĩ rằng tôi thấy vấn đề của tôi:
MacBook-Pro:lib ken$ lipo -info libMagickWand.5.dylib
Non-fat file: libMagickWand.5.dylib is architecture: x86_64
Cập nhật:
... nhưng tôi vẫn đang gặp vấn đề. Tôi không thể tìm ra cách để biên dịch ImageMagick với kiến trúc i386. Khi tôi cố gắng làm như vậy bằng cách sử dụng cờ, nó phàn nàn về các thư viện khác được biên dịch như 64-bit.
Xem câu trả lời cập nhật của tôi. –