天天看點

Java通過JNI調用C++的DLL庫

Java通過JNI實作調用C++程式

 好久沒碰JNI這個東西了,剛工作的時候自己寫過點東西,這麼些年很少用到,最近一個項目又用到它了,是以總結一下給自己留個記号!省下下次再用到到處查資料。Java通過JNI實作調用C或者C++寫的程式,實作對底層或者下位機的讀寫通訊,在桌面開發中是經常遇到的。這裡通過一個示範程式,實作Java通過JNI實作C++方法調用。要完成Java JNI調用C++程式,需要如下幾步:

第一步:建立一個Java Class檔案,定義好本地方法接口API,其中本地方法前面要加上關鍵字native才可以。

第二步:是要編譯對應的Java檔案HelloJNI.java通過javah這個指令行即可,我這裡寫了個bat檔案,這樣可以指定JDK版本,隻要把這個bat檔案放到對應的eclipse編譯好的build或者bin或者target目錄下,然後輕按兩下運作即可,bat檔案的内容如下:

運作之後會得到com_gloomyfish_jnidemo_HelloJNI.h檔案,打開檢視内容應該顯示如下:

第三步:打開VS2015建立一個win32項目

Java通過JNI調用C++的DLL庫

點選下一步選擇應用程式類型中DLL,顯示如下:

Java通過JNI調用C++的DLL庫

然後點選【完成】,目錄結構顯示如下圖輕按兩下打開jnitest.cpp,

Java通過JNI調用C++的DLL庫

右鍵添加生成的JNI頭檔案

Java通過JNI調用C++的DLL庫

此外還要添加JDK目錄下面include裡面的三個頭檔案jni.h與jawt_md.h與jni_md.h所在的目錄。添加方法,右鍵【jnitest】選擇->屬性

Java通過JNI調用C++的DLL庫

然後完成如下的C++代碼

生成解決方案之後得到jnitest.dll檔案,把DLL檔案copy到對應的JDK的bin目錄下面和JRE的bin目錄下,然後在Java程式中添加如下測試代碼:

Java通過JNI調用C++的DLL庫