话不多说,开始第一步:定义一个普通的java类,如下:
记住"dllHelloWorld"为后面“C文件”的文件名。类文件中不用声明类的包名!!!。
第二步:将java类的文件拷贝到一个目录下:
第三步:利用命令行,创建这个类的对应的c的头文件,记得跳转到自定义的目录下执行。
指令 javah -jni xxx
没输出东西就是好事,然后看看自己的文件夹,是否有头文件产生:
成功产生一个头文件。(若是指令执行后出错,无法找到对应的类,可能是类中声明了包名的原因)
第四步,创建一个c的项目:
选的是DLL,C项目。“名字”是第一步里对应的!!!。
点击确认,文件保存到自定义的dllHelloWorld文件夹中(我的是在D:\projectVc++\dllHelloWorld)
第五步:在编辑器打开之前生成的头文件:
15行后面的Java_Testjni_hello,后面创建c方法需要用;(java类里的本地方法写的不同,这里会有区别);
第六步:编辑c方法:
首先引入头文件 “jni.h”(在dllmain.c)
然后写方法
都是在dllmain.c这个文件里完成;
这样,本地方法对应的c方法就差不多完成了。
第七步:在我们的jdk中有相应的文件:
编译之前先导入3个文件;
在include中的jni.h,还有子目录win32下的俩个
都拷贝到我们自定义的目录下(我的是在D:\projectVc++\dllHelloWorld)
第八步:到这里我们可以开始编译这个c文件了:点击编译
编译成功
查看自己自定义的文件目录,是否有文件生成
成功,将生成的dllHelloWorld.dll拷贝到存放到起初存放java类的文件夹中:
最后一步,即用我们的命令行运行自己的java类:首先编译java类
然后运行,
成功输出结果,至此,自定义的本地方法及运行,成功。