JNI是Java Native Interface机制。我们平时看到Java代码里的native方法就是这种机制实现的。
Java 中的 native 方法的链接方式主要有两种。一是按照 JNI 的默认规范命名所要链接的 C 函数,并依赖于 Java 虚拟机自动链接。另一种则是在 C 代码中主动链接。
使用命令:javac -h . org/example/Foo.java可以生成名为org_example_Foo.h的头文件。
package org.example; public class Foo { public static native void foo(); public native void bar(int i, long j); public native void bar(String s, Object o); }
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class org_example_Foo */ #ifndef _Included_org_example_Foo #define _Included_org_example_Foo #ifdef __cplusplus extern "C" { #endif /* * Class: org_example_Foo * Method: foo * Signature: ()V */ JNIEXPORT void JNICALL Java_org_example_Foo_foo (JNIEnv *, jclass); /* * Class: org_example_Foo * Method: bar * Signature: (IJ)V */ JNIEXPORT void JNICALL Java_org_example_Foo_bar__IJ (JNIEnv *, jobject, jint, jlong); /* * Class: org_example_Foo * Method: bar * Signature: (Ljava/lang/String;Ljava/lang/Object;)V */ JNIEXPORT void JNICALL Java_org_example_Foo_bar__Ljava_lang_String_2Ljava_lang_Object_2 (JNIEnv *, jobject, jstring, jobject); #ifdef __cplusplus } #endif #endif
原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2960