几天前,我开始玩 android NDK。尝试编译书中的一个示例程序时出现了一个小问题。
所以在这里我需要获取对 JavaVM 的引用。
// Global env ref (for callbacks)
static JavaVM *g_VM;
JNIEXPORT jint JNICALL Java_jni_Natives_LibMain
(JNIEnv * env, jclass class, jobjectArray jargv)
{
// obtain a global ref to the caller jclass
(*env)->GetJavaVM(env, &g_VM); ...
Eclipse 说“method 'GetJavaVM()' could not be resolved
”就像包含 (*env) object
方法的所有其他行一样。
包含目录有路径:C:\programs\IDE\adt-bundle-windows-x86_64-20130219\android-ndk-r8e\platforms\android-14\arch-arm\usr\include
所以我不认为它可能与包含路径有关,但我可能是错的。
最佳答案
您正在编译 .cpp 文件吗?
JNIEXPORT jint JNICALL Java_jni_Natives_LibMain
(JNIEnv * env, jclass class, jobjectArray jargv)
{
// obtain a global ref to the caller jclass
env->GetJavaVM(&g_VM); ...
获取 JavaVM 引用的正常方法是在 JNI_OnLoad 中:
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* aReserved)
{
// cache java VM
g_VM = vm;
...
}
关于安卓系统。无法获取对 JVM 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16376736/