- #include <stdio.h>
- #include <jni.h>
- JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv * env, jobject obj)
- {
- return env->NewStringUTF( (char *)"HelloJni Native String");
- }
- static JNINativeMethod methods[] = {
- {"stringFromJNI", "()Ljava/lang/String;", (void*)Java_com_example_hellojni_HelloJni_stringFromJNI },
- };
- static const char *classPathName = "com/example/hellojni/HelloJni";
- /*
- * Register several native methods for one class.
- */
- static int registerNativeMethods(JNIEnv* env, const char* className,
- JNINativeMethod* gMethods, int numMethods)
- {
- jclass clazz;
- fprintf(stderr, "RegisterNatives start for '%s'", className);
- clazz = env->FindClass(className);
- if (clazz == NULL) {
- fprintf(stderr, "Native registration unable to find class '%s'", className);
- return JNI_FALSE;
- }
- if (env->RegisterNatives(clazz, gMethods, numMethods) < 0) {
- fprintf(stderr, "RegisterNatives failed for '%s'", className);
- return JNI_FALSE;
- }
- return JNI_TRUE;
- }
- /*
- * Register native methods for all classes we know about.
- *
- * returns JNI_TRUE on success.
- */
- static int registerNatives(JNIEnv* env)
- {
- if (!registerNativeMethods(env, classPathName,
- methods, sizeof(methods) / sizeof(methods[0]))) {
- return JNI_FALSE;
- }
- return JNI_TRUE;
- }
- // ----------------------------------------------------------------------------
- /*
- * This is called by the VM when the shared library is first loaded.
- */
- typedef union {
- JNIEnv* env;
- void* venv;
- } UnionJNIEnvToVoid;
- jint JNI_OnLoad(JavaVM* vm, void* reserved)
- {
- UnionJNIEnvToVoid uenv;
- uenv.venv = NULL;
- jint result = -1;
- JNIEnv* env = NULL;
- printf("JNI_OnLoad");
- if (vm->GetEnv(&uenv.venv, JNI_VERSION_1_4) != JNI_OK) {
- fprintf(stderr, "GetEnv failed");
- goto bail;
- }
- env = uenv.env;
- if (registerNatives(env) != JNI_TRUE) {
- fprintf(stderr, "GetEnv failed");
- goto bail;
- }
- result = JNI_VERSION_1_4;
- bail:
- return result;
- }
使用JNINativeMethod符号表的例子(Hello-jni例子C++版本)
最新推荐文章于 2021-12-29 12:21:02 发布