0

私は JNI について読み始めたばかりで、私たちのプロジェクトの C++ 側の担当者が、Java インターフェースと DLL ファイルの 2 つのファイルを指摘してくれました。DLL が手元にあるので、C++ 側で何が起こっているかについて他の知識が必要です。DLL をクラス パスに配置し、彼がくれた Java インターフェイス経由でアクセスするだけですか? 彼は Java インターフェイスを使用してヘッダー ファイルを作成し、これは .cpp ファイルに含まれています。それから、DLLが生成されたと思います。

以下は私が持っているコードの一部です

    System.loadLibrary("PredictionService");
    JNIPrediction predictor = new JNIPrediction();
    predictor.getPredictions("test");

エラーは発生しませんが、これは DLL を正常にロードし、DLL 内で getPredictions() メソッドを呼び出しているということですか? 基本的に、私が知る必要があったのは、これが通常の JNI の使用方法です。

4

1 に答える 1

0

「Java インターフェイス ファイル」は、一般的に定義されている用語ではありません。DLL 内の関数を呼び出す方法を示すために、少なくとも C ヘッダー ファイルまたはドキュメントが必要です。DLL 自体から得られる可能性が高い唯一の情報は、使用可能なメソッドの名前です。

DLL メソッド シグネチャを記述する DLL にデバッグ情報を埋め込むことは可能ですが、DLL にそのような情報が含まれている可能性は低く、それを利用するには追加のツールが必要です。

于 2012-10-03T15:50:42.420 に答える