Java通过jni调用c语言方法

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

1、新建java工程Sudoku

2、新建类文件UseCproject

3、类中方法如图示

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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;点击应用,确定

Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法                            Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

10、点击 下一步

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

Java通过jni调用c语言方法Java通过jni调用c语言方法

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法

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

Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法

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

Java通过jni调用c语言方法Java通过jni调用c语言方法