私はちょっと慣れていませんが、自分のプロジェクトでレガシー dll をいつ使用したいかについて多くのことをJNI
読んでいます。JNI
すぐに、ネイティブ メソッドにパラメーターを指定できないことがわかりました。これは私が成功しなかったコーディングを試みた例です:
Hello.java:
package HelloWorld;
Public class Hello {
Private static native int HelloWorld();
Private static native int Mirror(int a);
Static {
System.loadLibrary("Example"); //got path in
vm arguments - works.
}
Public static void main(String[] args) {
Int a = 8;
System.out.println(Mirror(a));
}
javah を使用して、この署名を得たヘッダーを作成しました。
JNIEXPORT jint JNICALL Java_HelloWorld_Hello_Mirror (JNIEnv *, jclass, jint);
次の impl を使用して、h と同じ署名の cpp: を作成しました。"return 1";
それだけです...これは私が日食から得るエラーです:
Exception in thread "main" java.lang.UnsatisfiedLinkError: HelloWorld/Hello.Mirror(I)I
at HelloWorld.Hello.main (Hello.java:14)
これらは私の考えです: A. c と cpp について何かを見ました。B.jdkか何か?C. ライブラリは完全に読み込まれます (パラメーターを取得しない他の関数を確認しました)。おそらく、型に互換性がありませんか?
しばらくこれで立ち往生しています。皆さんが私を助けてくれることを願っています!