C 在 JNI 中的实现,语法更改
Implementation of C in JNI , syntax changing
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 实现?
因为根据我的理解,如果答案是肯定的,如果.c文件中有100个方法似乎是错误的,我需要重写100个方法。
感谢您的回答,对菜鸟表示抱歉。
JNI 接口的东西只需要在 Java 和 C 之间的边界上。
因此,即使您有 thousand 个函数,如果您只是通过 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;
}
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 实现? 因为根据我的理解,如果答案是肯定的,如果.c文件中有100个方法似乎是错误的,我需要重写100个方法。
感谢您的回答,对菜鸟表示抱歉。
JNI 接口的东西只需要在 Java 和 C 之间的边界上。
因此,即使您有 thousand 个函数,如果您只是通过 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;
}