編寫 JNI 時,數據類型名字遵循 Java 的相關規則,如 jint,jchar,jboolean,jlong 等,DLL 代碼和 Java 代碼交換數據也有自己的一套方法,如 env->GetFieldID(),env->GetMethodID() 等,需要一些時間才能熟悉,初學總是難免犯一些低級錯誤,所以掌握正確的調試方法尤爲重要。
本人採用的工具是:Eclipse、VC++6.0
步驟如下:
- Eclipse 新建工程,編寫 Java 代碼
- cmd 進入命令行模式,切換到工程目錄的 bin 文件夾,javah -jni com.ldq.xxx 生成頭文件 _com_ldq_xxx.h
- VC++6.0 新建 DLL 工程,編寫源文件 _com_ldq_xxx.cpp
- 注意將 jni.h 文件和 jni_md.h 文件位置加入 Include 路徑
- DLL 無法自已運行,需要可執行的 exe 調用 DLL 纔可以,VC++6.0 中的設置如下
-
在左側 workspace 中,右鍵點擊建立的DLL工程,選 Settings ,選 Debug 選項卡,依次填入
- Executable for debug session 填入 C:\Program Files\Java\jdk1.6.0_13\bin\java.exe
- Working directory 填入 DLL工程路徑\debug
- Program arguments 填入 com.ldq.xxx
- 將 Eclipse 工程路徑下 bin 文件夾的類文件拷貝到 DLL工程路徑\debug 下
- 由於從 java.exe 啓動,單步調試是彙編代碼,所以要在調試的函數中設置斷點,運行到斷點處再單步調試
-
在左側 workspace 中,右鍵點擊建立的DLL工程,選 Settings ,選 Debug 選項卡,依次填入