JNA實現Java調用C++動態鏈接庫
今天偶然看到了JNA的介紹,下載下來試了一下,很好用,相比較JNI要簡單很多。做了一個可以callback的c++動態鏈接庫,實現了java和c++的互相調用。
1、開發環境:
開發工具:Netbeans 6.8,包含了Java和C++開發插件,用一個工具比較方便,可以同時開發C++的dll和Java代碼。
C++環境:MingW 5.1.6+MSYS、g++ 3.4.5
Java環境:JDK 1.6.0_18
2、C++代碼
用Netbeans創建一個動態鏈接庫項目JNALib,創建一個c++源文件clib.cpp,生成結果為libJNALib.dll






















注意:其中OpenFunc聲明了一個回調類型,也就是一個函數指針,可以通過init將java中的OpenFunc方法傳遞進來,設置這個函數指針,如此一來,可以實現C++到Java的回調。
3、Java代碼
創建一個Java項目JNADemo,創建一個包clibtest,創建以下java代碼:







































4、項目結構如下

5、編譯C++項目,生成libJNALib.dll,拷貝到JNADemo主目錄,目錄結構如下:

6、運行程序,結果如下:
