是否JNIEXPORT或JNICALL必须在实现 JNI 本机方法的函数声明中使用,该方法不是从动态库加载的,而是使用 JNI 函数注册的RegisterNatives?
例如:
/* Is JNIEXPORT or JNICALL required here? */
JNIEXPORT void JNICALL test(JNIEnv *env, jobject obj) {
/* ... */
}
JNINativeMethod method = {"test", "()V", (void*)test};
env->RegisterNatives(cls, &method, 1);
我的理解是这JNICALL是必需的,因为它指定了正确的调用约定,但JNIEXPORT不是必需的,因为它用于从动态库中导出函数。但是,我没有在 JNI 文档中找到确认。