0
所有導遊JNI我已經看到了(如JNI runtime linking)建議我聯繫我的JNI庫對libjvm.so
:libjvm.so:鏈接或不鏈接?
$ 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,我可以清楚地看到相應的弱符號在nm -C
輸出:
00000690 W JNIEnv_::ThrowNew(_jclass*, char const*)
00000672 W JNIEnv_::FindClass(char const*)
不過,如果我做在命令行中沒有提及-ljvm
,定製機庫繼續工作就好了,可能是因爲libjvm.so
由任何 Java進程自動加載。
你能告訴我什麼時候它是絕對是需要明確鏈接到libjvm.so
?