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






















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







































4、項目結(jié)構(gòu)如下

5、編譯C++項目,生成libJNALib.dll,拷貝到JNADemo主目錄,目錄結(jié)構(gòu)如下:

6、運行程序,結(jié)果如下:
