欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JNI: C 语言调用 Java 方法示例,jnijava,#include <jn

来源: javaer 分享于  点击 36725 次 点评:178

JNI: C 语言调用 Java 方法示例,jnijava,#include
#include <jni.h>#include <stdio.h>#include <stdlib.h>#include <wchar.h> /* include the file to support unicode function */const char*DispatchStatus(int status){    switch (status) {        case JNI_OK:            return \"success\";            break;        case JNI_ERR:            return \"unknown error\";            break;        case JNI_EDETACHED:            return \"thread detached from the VM\";            break;        case JNI_EVERSION:            return \"JNI version error\";            break;        default:            return __FILE__ \": unknow error\";            break;    }}voidArrayTest(JNIEnv* env){    int i = 1;    jintArray array = (*env)-> NewIntArray(env, 10);    for(; i<= 10; i++)        (*env)->SetIntArrayRegion(env, array, i-1, 1, &i);    /* 获取数组对象的元素个数 */    int len = (*env)->GetArrayLength(env, array);    /* 获取数组中的所有元素 */    jint* elems = (*env)-> GetIntArrayElements(env, array, 0);    for(i=0; i< len; i++)        printf(\"ELEMENT %d IS %d\\n\", i, elems[i]);}intmain(int argc, const char** argv){    jint status = JNI_OK;    JavaVM* jvm = (JavaVM*)0;    JNIEnv* env = (JNIEnv*)0;    JavaVMInitArgs vm_args;    vm_args.version = JNI_VERSION_1_4;    vm_args.options = (JavaVMOption*)0;    vm_args.nOptions = 0;    vm_args.ignoreUnrecognized = JNI_FALSE;    status = JNI_GetDefaultJavaVMInitArgs(&vm_args);    if (0 != status) {        printf(\"%s\\n\", DispatchStatus(status));        return EXIT_FAILURE;    }    status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);    if (0 != status) {        printf(\"test: %s\\n\", DispatchStatus(status));        return EXIT_FAILURE;    }    printf(\"\\r\\n===== Array testing =====\\r\\n\");    ArrayTest(env);    printf(\"test: success\\n\");    if(jvm)    (*jvm)->DestroyJavaVM(jvm);    return EXIT_SUCCESS;}//该片段来自于http://byrx.net

相关栏目:

用户点评