2

Mono を使用して、一連のネイティブに公開されたコマンドのラッパーを作成しています。

セットは同じ (コマンドと署名) ですが、Windows では DLL を介して、Mac では DyLib を介して公開されます。

ラッパー .NET/Mono DLL を 1 つだけ作成しながら、インポート元の適切なライブラリを自動的に見つけられるようにする方法があるかどうか疑問に思っていました。

もしそうなら、構文は何ですか?そうでない場合、コンパイルする 2 つの異なる OS から DllImport を分離するコンパイラ定義は何でしょうか?

編集:Monoで可能であれば、Mac部分の動的ライブラリ(.dylib)の代わりに静的ライブラリ(.a)のボーナスポイント。

4

3 に答える 3

3

各プラットフォームでどのライブラリをロードするかを Mono に指示する dll マップ構成ファイルを出荷することをお勧めします。

http://www.mono-project.com/Config_DllMap

于 2011-07-02T05:12:49.250 に答える
2

両方のライブラリに同じ名前を付けることができれば、コードの変更はまったく必要ありません。少なくとも、C で記述されたネイティブ ライブラリを使用する Windows/Linux では、そのように機能しました。

于 2011-07-03T21:50:11.590 に答える
-1

私は使うだろう

#define MAC/WINDOWS

#if

コード内。DLL が呼び出されるように、コンパイル時に -define WINDOWS または -define MAC を使用します。したがって、少なくとも 1 つのコード ベースを用意するか、環境をチェックする必要がありますが、これは簡単に難しくなります。

于 2011-07-02T04:29:06.710 に答える