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
修改了記憶體大小,就解決問題了。如果你遇到同樣的問題,不妨試一試。
相關推薦
JNA讀取dll動態庫導致jvm崩潰
最近準備用Java呼叫讀卡器進行讀卡和刷卡,廠商沒有java版的SDK,只提供了c++的dll動態庫,下面是我呼叫動態庫的一些方法,如果有大神有更好的方法,歡迎指導。第一步:下載JNA的jar包匯入到程式裡面(maven可以自行到倉庫拿)dll介面:java對應的介面:其中l
java使用JNA框架調用dll動態庫
路徑 sta ... 情況下 build 官方 desc jna ace 這兩天了解了一下java調用dll動態庫的方法,總的有三種:JNI、JNA、JNative。其中JNA調用DLL是最方便的。 ·JNI ·JNA ·JNative java使用 JNI來
JNA呼叫C動態庫dll、so
1.介紹jna JNA(Java Native Access )提供一組Java工具類用於在執行期動態訪問系統本地庫(native library:如Window的dll)而不需要編寫任何Native/JNI程式碼。開發人員只要在一個java介面中描述目
JNA方式呼叫dll動態庫
java呼叫dll較為常用的方式有JNA和JNI。 JNA是建立在JNI技術基礎之上的一個Java類庫,我們可以方便地使用java直接訪問動態連結庫中的函式。 原來使用JNI,必須手工用C寫一個動態連結庫,在C語言中對映Java的資料型別。 而JNA提供了一個動態的C
java.lang.UnsatisfiedLinkError: Can not load XXX library ... JNA不能載入DLL動態庫問題
java.lang.UnsatisfiedLinkError: Can not load XXX library ... JNA不能載入DLL動態庫問題 1, 版本問題。 版本一定要對應。 64位系統,對應64的jdk或者jre,同時對應動態庫也需要64位的。 32位也是
Visual Studio中根據系統區分引用64位、32位DLL動態庫文件的配置方法
問題 eight 找到 下拉 float c# more 遇到 語法 原來使用Win7的32位系統,進行C#工程的開發,後來重裝系統,換成了win7的64位系統 調試原來的工程,由於在其中引用了“SQLite”的32位的dll,導致在64為位下程序無法運行(但是編譯可以通
h標頭檔案 lib庫檔案 dll動態庫檔案之間的關係
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
沒有載入動態庫導致的error: symbol lookup error: undefined symbol
做了一個瀏覽器外掛,需要編譯為 abcPlugins.so , 這個.so需要呼叫另外一個業務庫 defLib.so裡面的函式。 把abcPlugins.so替換到目標板上,瀏覽器程序啟動不起來。 1. 查詢瀏覽器程序啟動過程錯誤 1
DLL動態庫巢狀跨級呼叫問題
在應用過程中,動態庫呼叫動態庫是常見操作。其在理論上可行,實施也相對簡單,呼叫層次關係如下: App主程式---(同目錄)--->DLL_A------(同目錄)----->DLL_B&DLL_C 圖1 呼叫層次關係 針對圖1所示的應用,應對的方法如
dll 動態庫的匯入匯出定義
dll工程標頭檔案加入宣告: #ifdef MY_API //如果定義了 #define MY_API extern "C" _declspec(dllexport) #else &
windows系統下可執行程式呼叫lib靜態庫和dll動態庫的方法
#include <stdio.h> #include <Windows.h> int main() { HINSTANCE h=LoadLibraryA("newdll.dll"); typedef int (* FunPtr)(int a,int b);//定義函
關於java用jni呼叫 dll動態庫Can't find dependent libraries錯誤的解決
最近在做一些java開發的時候,需要呼叫作業系統底層的一些東西,所以我用c++ 寫了一個dll動態庫檔案,通過java的JNI進行呼叫。dll 檔案生成之後 在本機用java呼叫沒有問題, 但是換了一臺主機就報錯了,報錯如下: java.lang.UnsatisfiedLinkError: D:\wo
利用c#實現dll動態庫,並在c++中呼叫的方法
近期,在進行一個大專案開發。其中涉及多語言協同開發。主要是c#dll和c++dll的開發和應用,其中,需要在c++中呼叫c#dll的內容。現在把開發中的經驗、教訓和注意事項總結整理如下,希望對其他人能有所幫助。 1.建立c#dll,
python呼叫dll動態庫傳入結構體作為引數
test.h中定義結構體 test.h #include <stdio.h> #include <wchar.h> #define ARRAY_NUMBER 20 #define STR_LEN 20 typedef struct _tag_Str
VS2017 DLL動態庫使用教程【七】為什麼我的程式不能在別人電腦執行
考慮一個很最最最簡單的程式: #include <stdio.h> #include <Windows.h> int main() { printf("你好\n"); system("pause"); return 0; } 將其編譯,得到一
.h標頭檔案 .lib庫檔案 .dll動態庫檔案之間的關係
.h標頭檔案是編譯時必須的,lib是連結時需要的,dll是執行時需要的。 附加依賴項的是.lib不是.dll,若生成了DLL,則肯定也生成 LIB檔案。如果要完成原始碼的編譯和連結,有標頭檔案和lib就夠了。如果也使動態連線的程式執行起來,有dll就夠了。在開發和除錯階段,
JNA呼叫C++動態庫
1、Java呼叫本地C/C++動態庫的方法 大概主要有兩種JNI(Java Native Interface)和JNA(Java Native Access),最後介紹一種大招。本文沒有程式碼,只有引用人的文章,demo人家都已經寫的很清楚了,我就是總結下以備自己檢
MFC呼叫QT編寫的DLL動態庫
MFC呼叫QT編寫的動態庫,如果QT dll裡面用到了一些訊息迴圈相關的介面,比如QTimer,QEventLoop等,會由於沒有QAppAplication而導致這些調用出現異常,如果DLL裡面沒有介面顯示的話,解決方法還是相對比較簡單的。主要思想是使用win
Andorid 引用.so庫導致的崩潰問題解決辦法
使用第三方SDK的時候,經常會有.so庫。使用時一個重要問題是:主專案和引用庫專案中lib的目錄結構必須保持一致,即庫專案中含有arm64-v8a目錄,主工程和其他庫工程也必須含有arm64-v8a目錄,且裡面必須有相應的.so檔案。 可以在build檔案裡面使用: nd
Java(JNA)調用C++動態庫(dll)
x86 class hid enc spa 好的 開源 技術分享 lan JNA(Java Native Access):是建立在JNI之上的Java開源框架,SUN主導開發,用來調用C、C++代碼,尤其是底層的庫文件(windows中叫dll文件,linux下是.so文件