1.编写java测试类
2.利用java测试类生成C头文件(我没有C和C++基础,后面出现的非JAVA的代码具体是C还是C++,我也不清楚。所以,教程中我都把它称为C)
3.利用C头文件编写C代码
4.生成C库
5.java调用测试
第一步:编写java测试类
代码如下:
package com.aijiao.test; public class JNIDemo { //定义一个方法,该方法在C中实现 public native void testHello(); public static void main(String[] args){ //加载C文件 System.loadLibrary("TestJNI"); JNIDemo jniDemo = new JNIDemo(); jniDemo.testHello(); } }
第二步:利用java类生成C头文件
生成命令如下:
javah -classpath . -jni com.aijiao.test.JNIDemo
该命令需要在java测试类的工程的bin目录下执行
下图是生成的头文件
第三步:用visual studio编写C代码
1.选择文件-》新建-》项目
2.选择(Win32),输入项目名称,项目地址,点击确定。
3.直接点击下一步
4.这里选择DLL,空项目,然后点完成。
5.生成如下如的项目结构
6.在源文件的文件夹上面右键,选择添加-》类。
7.直接点击添加
8.输入类名,点击完成。(C++类)
9.在你的JDK目录的include目录下有一个jni.h的文件,include的win32目录下有个jni_md.h文件,还有java工程的bin目录下的C头文件,一起拷贝到C工程的TestJNI目录下:(当前工程名就叫TestJNI,工程目录下还有一个TestJNI目录,工程目录-》TestJNI-》jni.h com_aijiao_test_JNIDemo.h jni_md.h)如下图:
当前目录为工程目录
拷贝过来的jni.h,com_aijiao_test_JNIDemo.h和jni_md.h
10.在C项目的头文件文件夹上面右键,添加-》现有项
11.选择jni.h,com_aijiao_test_JNIDemo.h和jni_md.h
12.打开com_aijiao_test_JNIDemo.h文件
13.将#include <jni.h>修改为#include "jni.h",错误提示消失。
14.在TestJNI.cpp文件中写入如下代码:
代码:
#include "com_aijiao_test_JNIDemo.h" #include <iostream> #include <stdio.h> JNIEXPORT void JNICALL Java_com_aijiao_test_JNIDemo_testHello (JNIEnv *, jobject) { printf("this is C++ print"); }
15.配置C工程,在解决方案上右键,选择属性
16.做如下配置
第四步:在项目上右键生成,输出如下下信息
下面是生成的dll库
第五步:在Java项目下如下设置
填写dll库所在路径(不需要带文件名),保存即可。
运行java类,结果入下。
作者: aijiao
Email: 2585838470@qq.com
地址: https://my.oschina.net/aijiaoer0624/blog/1142876