2017-06-06 7 views
0

すべてのガイド(例えばJNI runtime linkingは)私はlibjvm.soに対する私のJNIライブラリをリンクすることをお勧めします。libjvm.so:リンクするかどうかを指定しますか?私が見てきたJNIへ

$ gcc -I${JAVA_HOME}/include -c -o test.o test.c 
$ gcc -shared -o libtest.so test.o -L${JAVA_HOME}/jre/lib/i386/server -Wl,-rpath,${JAVA_HOME}/jre/lib/i386/server -ljvm 

私のカスタムライブラリはC++で書かれ、C++ JNIのAPIを使用している場合は、私は明らかにすることができますおそらくので、私はコマンドラインではない言及-ljvmを行う場合は、カスタムのネイティブライブラリがうまく動作し続け、それでも

00000690 W JNIEnv_::ThrowNew(_jclass*, char const*) 
00000672 W JNIEnv_::FindClass(char const*) 

nm -C出力に対応する弱いシンボルを参照してくださいはで自動的にロードされます。 Javaプロセス。

具体的にlibjvm.soとリンクする必要がある場合は、となると教えてください。

答えて

1

他の方法で実行したいときに必要と思う。

たとえば、C/C++コードからJVMを作成し、JVMのメソッドを呼び出したいとします。

たとえば、ここではljvmとリンクする必要があります。そうしないと、Cコード内にシンボルが見つかりません。

https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo027

関連する問題