编写 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 选项卡,依次填入