我目前正在尝试使用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;
}
答案 0 :(得分:2)
这是链接器错误,而不是编译错误。您需要链接到JVM库。
假设你正在使用GCC,那就是:
-L/path/to/java/jre/lib/<arch>/<server or client> -ljvm