[JNI] C++如何调用Java代码

来源:互联网 发布:网络延迟单位 编辑:程序博客网 时间:2024/06/04 20:03

写一个Java程序,编译成.class
</pre><pre name="code" class="java">public class JNITest {    public static int ReturnInt(){        return 1001;    }    public static String ReturnString(){        return "1001String";    }}

c++代码

int main(){     JavaVM *jvm;       /* denotes a Java VM */    JNIEnv *env;       /* pointer to native method interface */    JavaVMInitArgs vm_args; /* JDK/JRE 6 VM initialization arguments */    JavaVMOption* options = new JavaVMOption[1];    options[0].optionString = "-Djava.class.path=.";    vm_args.version = JNI_VERSION_1_6;    vm_args.nOptions = 1;    vm_args.options = options;    vm_args.ignoreUnrecognized = false;    /* load and initialize a Java VM, return a JNI interface     * pointer in env */    JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);    delete options;    /* invoke the Main.test method using the JNI */    jclass cls = env->FindClass("JNITest");    cout<< "jclass " << cls<< endl;            jmethodID returnInt = env->GetStaticMethodID(cls, "ReturnInt", "()I");     cout<< "ReturnInt ID result " << returnInt<< endl;                    int result = env->CallStaticIntMethod(cls, returnInt);    cout<< "ReturnInt result " << result<< endl;                /* We are done. */    jvm->DestroyJavaVM();}           



0 0
原创粉丝点击