我想从 C++ 调用包含 Android SDK
类的 Java 代码。我可以从 C++ 调用桌面控制台应用程序的纯 Java 代码。但我无法从 C++ for Android 调用包含 Android SDK
类的 Java 代码(我收到此错误:JNI_CreateJavaVM 未在此范围内声明。
)。我想要一个适用于 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
最佳答案
简单来说,如果你想从C++调用Java函数,你应该实现一个jni回调。
您可以从此 android ndk examples repository 关注 hello-jniCallback 项目.
大多数示例都是用 C 而不是 C++ 编写的,因此您应该做一些更改。 例如,C 中的那些函数如下:
FindClass(env, someString)
在 C++ 中你应该使用:
env->FindClass(someString)
关于java - 如何在 Android 上使用 jni.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41660420/