是否可以在两个不同的Java文件中使用相同的JNI方法?
例如, 我在c中有一个方法add()。我在JNI文件中编写了addJNI()。现在可以在两个不同的文件a.java和b.java
中调用addJNI()希望我很清楚。
感谢。
答案 0 :(得分:2)
是的,这是可能的。您只需要在一个java类文件中加载其本机库。并在所需的文件中使用该类。
见
这是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;
}
现在你可以让任何java类调用那个jni方法
class HelloWorld {
public static native void print(); //native method
static //static initializer code
{
System.loadLibrary("CLibHelloWorld");
}
}
现在可以根据需要在多个java文件中使用该java类
HelloWorld.print();
答案 1 :(得分:1)
当然,它与调用任何其他方法相同。但只是编写一个名为addJNI()的方法是不行的。您必须遵守javah工具生成的标头语法。
答案 2 :(得分:0)
是的,毫无疑问,请写一个包含JNI的Wrapper方法的类,它类似于接口类b \ w Java和C.
例如:
public class myWrapperClass
{
static
{
java.lang.System.loadLibraray("mylibraray");
}
public static void myfunctionOne(String str1, String str2);
public static int myfunctionTwo(int num1, String str2);
----
---more methods
------
}
//To call these methods in different classes as they are abstract and static:
myWrapperClass.myfunctionOne("Hello", "JNI");
myWrapperClass.myfunctionTwo("1 , Number");
希望这有助于。