簡體   English   中英

兩個不同的Java文件中的相同JNI方法

[英]Same JNI Method in Two Different Java Files

是否可以在兩個不同的Java文件中使用相同的JNI方法?

例如,我在c中有一個方法add()。 我已經在JNI文件中編寫了addJNI()。 現在可以在兩個不同的文件a.java和b.java中調用addJNI()

希望我清楚。

謝謝。

對的,這是可能的。 您只需要在一個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();

當然,它與調用任何其他方法相同。 但是僅僅編寫一個名為addJNI()的方法是行不通的。 您必須遵守javah工具生成的標頭語法。

是的,毫無疑問,編寫包含JNI的Wrapper方法的類,就像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");

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM