2012-01-28 6 views
8

MacのMonoでImageMagickライブラリと相互運用しようとしています。私はMacPortsでImageMagickライブラリをインストールし、ファイルがディレクトリ/opt/local/libに存在することを確認しました。また、ディレクトリ/usr/local/libにそのファイルへのソフトリンクを作成しました。 WandGenesis();への呼び出しで、私はメッセージで、DllNotFoundExceptionを取得し、MacのMonoでDllImportを使用したDllNotFoundException:間違ったアーキテクチャ

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

そして 'libMagickWand':

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

はここに私のApp.configファイルです:

は、ここに私のDLLIMPORT声明です。

私は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ビットモードでの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 

私は、私は私の問題を見つけたと思う

...しかし、私はまだ問題を抱えています。私はImageMagickをi386アーキテクチャでどのようにコンパイルするのか分かりません。私はフラグを使ってそうしようとすると、64ビットとしてコンパイルされた他のライブラリについて不平を言う。

+0

私の更新された回答を参照してください。おかげさまで –

答えて

7

更新:

モノのMac OS X上では32ビットである(少なくとも通常、あなたがmono --versionでそれを確認することができます)、あなたは可能ではない64ビットのバイナリとリンクしようとしています。 32ビットのバイナリを提供する必要があります(または64ビットのMonoを使用する必要があります)。


は、ライブラリのファイル名が対象であり、ライブラリが適切に配置された(またはDYLD_LIBRARY_PATHセット)された場合でも、あなたがエラーを持っていますか?そのような場合はMONO_LOG_LEVEL = debugで実行されたmonoの出力を提供してください。

+1

私はMONO_LOG_LEVEL = debugで実行し、いくつかの洞察を得ました。私は元の質問を更新します。 – ken

関連する問題