以C++實現讀寫文件,Java調用為例。包括中文路徑的傳遞和數組的傳入傳出。
1.環境准備
保證Java代碼能夠正確編譯運行(安裝JDK,正確配置環境變量)
保證C++代碼能夠正確編譯(安裝gcc)
文件目錄結構
/JNI/com/yiluboke/zxy/WriteReadJ.java
/JNI/WriteReadC++
2.編寫java代碼(參見JNI Windows平台)
3.編譯Java代碼,生成class文件
在/JNI目錄下
javac ./com/yiluboke/zxy/WriteReadJ.java,在該java文件所在目錄下生成WriteReadJ.class文件。
4.生成.h文件
在/JNI目錄下
javah -jni com.yiluboke.zxy.WriteReadJ,在當前目錄下生成com_yiluboke_zxy_WriteReadJ.h文件
5.編寫C++代碼,並編譯成so文件(參見JNI Windows平台)
6.運行java文件
在/JNI目錄下
java com.yiluboke.zxy.WriteReadJ
7.完整Demo下載
百度網盤地址:http://pan.baidu.com/s/1c0Rbj4s
本文采用的JDK是 64位版本1.7.0_79。
注意事項:
Linux的鏈接規定:一個庫的必須要是:lib+庫名+.so。鏈接的時候只需要提供庫名就可以了。
運行錯誤:
java.lang.UnsatisfiedLinkError:no XXX in java.library.path異常。
修改/etc/profile
增加export LD_LIBRARY_PATH=/JNI