我想从C ++中调用包含Android SDK
类的Java代码。我可以从C ++中为desktop console application
调用纯Java代码。但我无法从C ++ for Android调用包含Android SDK
类的Java代码(我收到此错误:JNI_CreateJavaVM was not declared in this scope.
)。我想要一个适用于Android的Java Native Interface
示例。你有关于Android的JNI的例子吗?此外,我发现只有桌面的JNI示例和代码,没有Android。
我还发现了不同的jni.h
和libjvm.so
文件位置:
jni.h Directories: ------------------------------------
/usr/lib/jvm/java-8-oracle/include/jni.h
Android/Sdk/ndk-bundle/platforms/android-*/arch-arm/usr/include/jni.h
android-studio/jre/include/jni.h
libjvm.so Directories: --------------------------------
/home/username/android-studio/jre/jre/lib/amd64/server/libjvm.so
/usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so
答案 0 :(得分:2)
简单来说,如果你想从C ++调用Java函数,你应该实现一个jni Callback。
您可以关注此android ndk examples repository中的hello-jniCallback项目。
大多数示例都是用C语言编写的,而不是用C ++编写的,因此您应该进行一些更改。 例如,C中的那些函数:
FindClass(env, someString)
在C ++中你应该使用:
env->FindClass(someString)