让我对JNI教程网站感到困惑的一件事是改变了C语法。我必须重写这个
/* helloworld without JNI implementation */
#include <stdio.h>
void main()
{
printf("Hello world\n");
return;
}
进入这个
/* JNI implementation - HelloJNI.c */
#include "HelloWorld.h"
#include "jni.h"
#include "stdio.h"
JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello world\n");
return;
}
对于C的每个JNI实现? 因为根据我的理解,如果答案是肯定的,我需要重写100个方法,如果.c文件中有100个方法似乎是错误的。
感谢回答,并为noobies感到抱歉。
答案 0 :(得分:1)
仅在Java和C之间的边界上需要JNI接口。
所以,即使你有千个函数,如果你只是直接通过JNI调用其中两个函数(其他函数被其他函数调用,或者被其他函数调用)那两个电话,等等,他们只是你需要改变的两个。
换句话说,您可以执行以下操作:
/* C implementation - HelloJNI.c */
#include "HelloWorld.h"
#include "jni.h"
#include "stdio.h"
// Normal C function, not called directly from Java.
static void output (char *str) {
printf ("%s", str);
}
// JNI C function, called from Java.
JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj) {
output("Hello world\n");
return;
}