0
我正在嘗試將JNI與現有C庫一起使用。當我嘗試使用此命令生成的.so文件:JNI方法的未定義參考
gcc -shared -fpic -o libWrapper.so -I/usr/lib/jvm/java-1.7.0-openjdk-i386/include/ -I/usr/lib/jvm/java-1.7.0-openjdk-i386/include/linux/ -I/home/testdpdk/packet-pro/dpdk-2.0.0/i686-native-linuxapp-gcc/include Wrapper.c -Wl,-z,defs
我得到的錯誤,以與被包含在JNI方法未定義的引用做:
/tmp/ccyrfz1B.o: In function `Java_Wrapper_eal_1init':
Wrapper.c:(.text+0x62): undefined reference to `GetObjectArrayElement'
Wrapper.c:(.text+0x7f): undefined reference to `GetStringUTFChars'
Wrapper.c:(.text+0xce): undefined reference to `env_init'
我怎麼會去讓JNI方法引用工作?另外,如何將現有的C庫鏈接到這個共享對象文件的'env_init'方法(libWrapper.so)?
爲它工作,如果我叫他們沒有通過'env':'env-> GetObjectArrayElement(服務,0);' – iutinvg
@iutinvg:您使用的是C++的包裝,其上有方法'env'而不是'* env'上的函數指針。 – nneonneo