jni java_JNI 入门教程

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目录下执行

下图是生成的头文件

57c2f9b94ce6a72b418ad67a6323b6f2.png

第三步:用visual studio编写C代码

1.选择文件-》新建-》项目

9c70e3031d0cecc856cb99d6852d5d94.png

2.选择(Win32),输入项目名称,项目地址,点击确定。

3badabb37a570ffd2ce23e547d56bf93.png

3.直接点击下一步

3d15f7813a75c56ffff4448710a362fe.png

4.这里选择DLL,空项目,然后点完成。

75496e65aca7397a21024dbee020b2bc.png

5.生成如下如的项目结构

8a61b203d69f1328cd075fe8de4c2fb7.png

6.在源文件的文件夹上面右键,选择添加-》类。

54132184d41272884b7e1944684d2be2.png

7.直接点击添加

bcb7117f45ec6f2dd4b4f9185b26fb93.png

8.输入类名,点击完成。(C++类)

bf80f8b0b60243f58056c4186761f710.png

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)如下图:

当前目录为工程目录

fd779805c4a2a6f1198966b591b95a4f.png

拷贝过来的jni.h,com_aijiao_test_JNIDemo.h和jni_md.h

2e59dff1c1a7033c354529c078b78418.png

10.在C项目的头文件文件夹上面右键,添加-》现有项

26fb0d49a3baa018d557d8ef03375c81.png

11.选择jni.h,com_aijiao_test_JNIDemo.h和jni_md.h

11f30b08b7af83a07a79a37cbd12104a.png

12.打开com_aijiao_test_JNIDemo.h文件

0c5be2f0133e030f89c4f84e701ed312.png

13.将#include 修改为#include "jni.h",错误提示消失。

1f4273c66cc873ad7d47a62952f51f9f.png

14.在TestJNI.cpp文件中写入如下代码:

391c26574db501136b3166f3a20ff59d.png

代码:#include "com_aijiao_test_JNIDemo.h"

#include

#include

JNIEXPORT void JNICALL Java_com_aijiao_test_JNIDemo_testHello

(JNIEnv *, jobject) {

printf("this is C++ print");

}

15.配置C工程,在解决方案上右键,选择属性

2a771414fe389ab7df6a2cadb910a597.png

16.做如下配置

44e078b342b045c95282386872f45c8c.png

第四步:在项目上右键生成,输出如下下信息

3b1b2473d516989197fbbf3c37e2a83c.png

下面是生成的dll库

687bfd7ede54a11bedb703f5bc122847.png

第五步:在Java项目下如下设置

0e5a3c808ffc2eba68da4711a5f29fb0.png

填写dll库所在路径(不需要带文件名),保存即可。

367ca757660614366653a3faf9ad6f37.png

运行java类,结果入下。

b54c9665c4ed25ff51f597952e0f4ba1.png

作者: aijiao

Email: 2585838470@qq.com

地址: https://my.oschina.net/aijiaoer0624/blog/1142876

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值