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