在Android应用程序中从c调用Java代码

我目前正在尝试使用JNI在
Android应用程序中从C调用一些Java代码.但是,当我尝试使用“JNI_CreateJavaVM”方法创建Java虚拟机时,我无法编译任何内容.它出现了错误:“对JNI_CreateJavaVM’的未定义引用”

它在jni.h头文件中明确声明,并且我能够使用在头文件中生成的类型和结构定义而没有错误,因此代码肯定包含它.当我尝试使用JNI_CreateJavaVM时,它无法编译.是否还需要包含其他内容,还是有其他方法可以让虚拟机从C调用Java?

这是我试图用它构建的代码:

#include "HelloWorldScene.h"
#include <stdio.h>
#include <jni.h>
#include <string.h>


bool HelloWorld::init()
{
    JavaVM* jvm;
    JNIEnv* env;
    JavaVMInitArgs args;
    jint result = JNI_CreateJavaVM(&jvm, &env, (void*)&args);//The code compiles if this line is commented out.

    //...Various initialization procedures

    return true;
}

最佳答案 这是链接器错误,而不是编译错误.您需要链接到JVM库.

假设您正在使用GCC,那将是这样的:

-L/path/to/java/jre/lib/<arch>/<server or client> -ljvm
点赞