最近專案需要,將C++的演算法工程編譯成元件,交給 Java后臺當作函式庫呼叫,就去了解了下Jni,使用起來還是比較方便的,
1.??首先撰寫Java的呼叫類,例如:
??
public class TestJni(){
static{
System.loadLibrary("TestJinDll"); //這個名字隨便起,跟C++生成的DLL對應就行
}
public static native String callFun(String paramStr); //具體的呼叫方法,
}
2.??匯出這個類的.h檔案,也就是頭檔案,可以用命令列生成也可以通過IDEA編輯個工具,這樣以后修改直接生成就可以了,就是這樣:

使用的時候就 檔案上右鍵--> external tools-->javah.就可以了,這時就生成了一個頭檔案,類似于這樣??:

這里邊的東西不要改,
3.??建立一個C++工程,選元件型別的,將這個頭檔案復制過去 ,同時還有 兩個頭檔案分別是jni.h和jni_md.h,這兩個檔案在jdk安裝目錄下include檔案下和include/win32下,全部 復制到C++工程,然后就是實作了,將頭檔案中的方法宣告原封不動的copy到源檔案 中去實作就可以了,然后就可以生成動態 鏈接庫了 ,
引數的型別jstring,只是Java到C++的中間型別,其他的型別也都可以,我這里傳個json串過去,在C++中決議成類就好了 ,

json串的決議可以使用 rapidjson, github大神封裝的AIGCJson很好用,傳送門,
4. 生成的鏈接庫復制到Java工程的根目錄下,呼叫就好了, String res = TestJni.callFun(param);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505254.html
標籤:Java
上一篇:“jsonPropertyValueQuery”ctsquery的選項“通配符”導致通過RESTAPI或在Marklogic查詢控制臺中呼叫的不同結果
下一篇:day03-執行緒應用
