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

下图是生成的头文件

第三步:用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 修改为#include “jni.h”,错误提示消失。

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

代码:

#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工程,在解决方案上右键,选择属性

16.做如下配置

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

下面是生成的dll库

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

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

运行java类,结果入下。

作者: aijiao

Email: 2585838470@qq.com

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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
  1. 免费下载或者VIP会员资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
  2. 提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。
  3. 找不到素材资源介绍文章里的示例图片?
    对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
  4. 付款后无法显示下载地址或者无法查看内容?
    如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理
  5. 购买该资源后,可以退款吗?
    源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源

评论(0)

提示:请文明发言