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

时间:2011-10-06 21:02:28

标签: java android c++

我目前正在尝试使用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;
}

1 个答案:

答案 0 :(得分:2)

这是链接器错误,而不是编译错误。您需要链接到JVM库。

假设你正在使用GCC,那就是:

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