当动态库被加载时这个函数被系统调用
cJNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved) {
JNIEnv *env = NULL;
if ((*jvm)->GetEnv(jvm, (void **) &env, JNI_VERSION_1_4) != JNI_OK)
return JNI_ERR;
// my code...
return JNI_VERSION_1_4;
}
当动态库被卸载时这个函数被系统调用
cJNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved) {
// my code ...
}
cjclass clazz = (*env)->FindClass(env, "")
cJNINativeMethod methods[] = {
{"getText", "()Ljava/lang/String;", getText}
};
(*env)->RegisterNatives(env, clazz, &methods, sizeof(methods)/sizeof((methods)[0]));
ctypedef struct {
const char* name;
const char* signature;
void* fnPtr;
} JNINativeMethod;
// name: 需要注册的 Java 函数名
// signature: 函数参数和返回值类型
// fnPtr: 需要注册的 C 函数指针
本文作者:菜鸟
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 许可协议。转载请注明出处!