java JNI: C 語言調用 Java 方法示例
#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; } } void ArrayTest(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]); } int main(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://outofmemory.cn
本文由用戶 ColDominque 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!