3

独自の .dylib を使用するために、Mono Mac プロジェクトで DLLImport を使用しようとしていますが、DllNotFoundException が発生します。libmojoshader.dylibなどの既存の.dylibファイルでこれを行うことができるので、.dylibと関係があると思います。

DLLImport の使用方法は次のとおりです。

[DllImport("libtestDylib.dylib")]
static extern int libsum(int a, int b);

次に libsum 関数を呼び出して、それが機能するかどうかを確認します。

MONO_LOG_LEVEL="debug" MONO_LOG_MASK="dll" mono myGame.exeコマンドを使用して端末からアプリを実行すると、このような問題をデバッグするのに最適な方法であることがわかりましたが、アプリの .exe を実行できません。 . ビルド フォルダー内の .exe と .app/contents/MonoBundle 内の .exe の両方を使用してみました。研究中。

最後のファイルは、「ファイルに有効な CIL イメージが含まれていません」というメッセージをスローします。他の2つは「アプリケーションバンドルにInfo.plistファイルがないか、Info.plistファイルにNSPrincipalClassがありません」。

したがって、最初のステップは、.dylib が見つからない理由について適切なデバッグ情報を取得するために、端末を介してアプリを実行することだと思います。

私が作成した .dylib は、XNA4 で作成された空の BSD C ライブラリです。

編集

既存の dylib を動作させることさえできないようです。

4

1 に答える 1

0

単一の c# ファイルを使用して新しい Mono Mac プロジェクトを作成し、それをターミナルからコンパイルしてデバッグ コマンドで実行することで問題を発見しました。端末のフィードバックにより、プログラムが .dylib を検索している場所がわかり、私が作成したライブラリは間違ったアーキテクチャで構築されていましたが、これは 32 ビット システム用に構築することで簡単に解決されました。

于 2012-11-19T12:46:45.383 に答える