簡體   English   中英

如何編寫JNI dll橋

[英]How to write a JNI dll bridge

我在我的Java應用程序中使用了一個dll驅動程序。 我讀到我需要為JNI創建一個dll橋。 首先,我想知道是否存在一些實用程序可以自動創建此網橋。

我有Dll的源代碼,我也知道如何創建我的網橋頭文件(javah),但由於我只需要調用driver方法,所以我不明白如何放入網橋實現中。我?

例如,這是我的驅動程序的頭文件:

BOOL CALLINGCONV IsInitialized();
int  CALLINGCONV Initialize(int Slot);
int  CALLINGCONV Finalize();
int  CALLINGCONV FinalizeML(int nSlot);

我也讀過有關JNA的文章,它看起來比較簡單,但也許不是很快,是真的嗎? you你

我可以建議您使用2個不同的庫來簡化JNI的工作

JavaCPP與JNA一樣簡單,但與原始JNI一樣快。 例如,假設標頭和庫文件分別命名為“ Driver.h”和“ Driver.lib”,則該Java類可以讓您高效地訪問Java中的這四個函數:

import com.googlecode.javacpp.*;
import com.googlecode.javacpp.annotation.*;

@Platform(include="Driver.h",link="Driver")
public class Driver {
    static { Loader.load(); }
    public static native @Cast("BOOL") boolean IsInitialized();
    public static native int Initialize(int Slot);
    public static native int Finalize();
    public static native int FinalizeML(int nSlot);
}

暫無
暫無

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

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