1. 程式人生 > >JNA讀取dll動態庫導致jvm崩潰

JNA讀取dll動態庫導致jvm崩潰

最近準備用Java呼叫讀卡器進行讀卡和刷卡,廠商沒有java版的SDK,只提供了c++的dll動態庫,下面是我呼叫動態庫的一些方法,如果有大神有更好的方法,歡迎指導。

第一步:

下載JNA的jar包匯入到程式裡面(maven可以自行到倉庫拿)

dll介面:

java對應的介面:


其中loadLibrary是載入dll動態庫檔案,JT_ReaderVersion是重寫的介面,對應的C++裡面的OnGetVersion方法。

當main方法調取介面的時候會導致jvm崩潰:


上面是報錯資訊,原因是因為向動態庫中傳值時出問題了,傳值的時候需要指定引數的記憶體大小



必須指定記憶體大小Pointer p = new Memory(512*512

);

修改了記憶體大小,就解決問題了。如果你遇到同樣的問題,不妨試一試。