Java通过jni调用c语言方法

来源:互联网 发布:mac 影片占用空间 编辑:程序博客网 时间:2024/04/27 09:36

有些人会选择用VC++来生成dull文件,但是由于VC++生成的dll文件是32位的,而现在大多数人使用的JDK是64位的,两者不兼容而导致程序无法运行,只能把JDK卸载换装32位版本的才行。但是vs2015可以生成64位的dll文件,所以我们今天就用它来实现java调用c语言方法

1、新建java工程Sudoku

2、新建类文件UseCproject

3、类中方法如图示


4、保存一下,进入工程的bin目录,就能看到编译好的class文件


5、点击下图最上方红框下拉按钮,点击进入External Tools Configurations


6、如果是第一次配置:

(1)双击Program;

(2)在Name框输入自定义名字;

(3)选择jdk下的javah.exe路径,一般在bin目录下;

(4)选择刚刚创建工程Sudoku的bin文件;

(5)输入    -classpath .;./classes -d "${workspace_loc:/Sudoku}/jni" -jni ${java_type_name}

          红色部分是Working Directory里面的引用,去掉\bin;点击应用,确定


7、接下来我们生成刚刚创建的UseCproject类的.h头文件,点击javaH,然后就会发现jni目录下已经生成了该类的.h头文件,没有的话就刷新一下工程

                            

8、此时这个头文件的位置是在工程的jni目录下


9、打开vs2015,文件----新建----项目,选择Visual C++,win32项目,自定义项目名称,此处我命名为Project1


10、点击 下一步


11、选择DLL,空项目,完成


12、点击Debug,选择配置管理器


13、平台选择x64,没有的话就新建一个,按确定


14、将刚刚生成的.h头文件拷贝到项目路径下,同时拷进去的还有jni.h和jni_md.h,这些可以从JDK的include文件下找到




15、右击项目头文件----添加----现有项,选择刚刚拷贝进去的三个头文件,右击项目源文件----添加----新建项,左边选中visual C++,中间选中c++文件(.cpp),输入文件名


16、cpp文件中的代码如下,要include刚刚生成的.h头文件,红框中的代码是.h文件中的代码框架,中间写入想要实现的方法



如果出现错误如下图,可以更改头文件com_icc_UseCproject.h中的内容


把头文件中的#include <jni.h>改成#include "jni.h",如下图


17、右击项目名称----生成,看到控制台有如下提示,则证明生成dll文件成功


18、在项目下的x64文件中可找到刚刚生成的dll文件


19、在项目下新建一个文件夹,名字自定义,在这里我们取名为dull


20、右击项目----Build path----Configurebuild path…,选择Libraries选项,展开JreSystem Library,选中NativeLibrary location,点击右边的Edit


21、点击workspace选择刚刚新建的dll文件夹,ok即可


22、把由vs生成的dll文件拷贝到刚刚的dull目录下


23、注意,java代码中LoadLibrary方法中的文件名一定要和dll文件的文件名一致


24、运行java程序,这时我们便成功了