2009-06-08 18 views
2

dllmap構成ファイルのエントリは、Windows DLLの要求をLinux(.so)ライブラリにマップするためにMonoで使用されます。しかし、Microsoftの.NETフレームワークがそのようなエントリで構成ファイルを解析しようとすると、 "dllmap"を理解できないためにエラーが発生するようです。 LinuxとWindows XPの両方で、私のディストリビューションに含まれるものはすべて変更なしに配布できると思います。これに関係するすべての移植性のうち、この設定エントリは本当に没落していますか?プラットフォーム間でこのファイルを共有する方法はありませんか?App.config dllmapエントリの移植性

答えて

2

本当に "dllmap"エントリが必要ですか?あなたは、Windowsの "somelibrary.dll"とLinuxの "somelibrary.so"の自動マッピング "somelibrary"に頼ることはできませんか?

また、フレームワークはちょうどそれが期待していないエントリを...飛ばしIかかわら

EDIT:Linuxのライブラリを出荷するための標準的な方法は、最新版へのバージョンに以下のシンボリックリンクのポインティングを持つことです。したがって、libfmodex-4.22.01.soを指すlibfmodex.soを追加します。その後、[DllImport("fmodex")]を使用すると、フレームワークは残りの部分を自動的に認識します。

+0

1)Windowsライブラリの名前はfmodex.dllです。 Linuxライブラリの名前はlibfmodex-4.22.01.soです。私はそれらの名前を変更したくないと思うし、自動マッピングがそれを理解できるかどうかは疑問だ。 2)私は.NETがランタイムエラーに達するまで、それが理解できない項目をスキップすると思った - 明らかに、エラーが発生するまで設定ファイルを読み込もうとしなかった。反応する方法は、ファイルを処理する別のエラーがありました。 – BlueMonkMN

+0

私は自分自身を確認することができましたが、現時点ではLinuxにブートしていません。つまり、.tar.gzファイル内にシンボリックリンクのようなものがあるので、アーカイブが解凍されるとファイルとシンボリックリンクが表示されます? – BlueMonkMN

+0

はい、これはtarのdafaultの動作です。 – skolima

0

dllインポートコードを別のアセンブリdllに配置します。その後、dllmapエントリとともにyourinterop.dll.configを追加します。それはMSによって無視され、モノで処理されます。私のduplicate questionを見てください。