JNI学习笔记(一):环境配置及简单使用 java调用c++ dll库

本文使用的开发环境:

  1. vs2008
  2. idea 64位
  3. jdk 1.8 64位

1.在idea里创建一个空项目,创建测试类

public class JniTest {
    public native void voidPrintTest();
    public static void main(String[] args){
        System.loadLibrary("jniLibrary");
        JniTest jniDemo = new JniTest();
        jniDemo.voidPrintTest();
    }
}

2.编译生成class文件,找到class文件的路径

class路径

3.找到javah.exe路径 ,注意,javah版本需要与idea中使用的一样,(如果只装了一个版本的java且添加到了环境变量,则不需要)

javah路径

4.命令行里输入 命令

//[]中的为可选项,classpath 指定class所在目录路径,-d 指定输出目录。
//如果不指定这两项,默认都是命令行当前目录(所以最好直接cd进class所在目录)
javah [-classpath class所在目录的绝对路径] [-d 输出文件的路径] -jni JniTest

示例:
在这里插入图片描述

5.执行完上条命令之后就会生成一个.h文件

在这里插入图片描述
这是用于编译c++ 动态库所需的头文件,内容如下所示

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JniTest */

#ifndef _Included_JniTest
#define _Included_JniTest
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     JniTest
 * Method:    voidPrintTest
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_JniTest_voidPrintTest
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

6.使用vs创建一个空的dll项目

在这里插入图片描述
在这里插入图片描述

7.添加头文件引用地址,前两个是jni目录(注意jdk版本要与idea中项目的一致),第三个是第5步生成的JniTest.h的目录

在这里插入图片描述

8.创建新cpp文件,添加JniTest.h到项目中,直接编译,可以直接成功,编译失败说明上一步目录配置错误。在这里插入图片描述

9.实现voidPrintTest函数

//func_Imp.cpp
#include <jni.h>
#include "JniTest.h"
#include <stdio.h>

JNIEXPORT void JNICALL Java_JniTest_voidPrintTest
(JNIEnv *, jobject){
	printf("hello");
	return;
}

10.编译动态库,值得注意的是,如果idea使用的jdk是64位的,则需要编译64位的dll

11.编译成功后,转到idea,菜单栏 Run -> Edit Configurations ->Templates->Application->VM options 添加第10步编译出的dll目录到iada项目中

在这里插入图片描述
在这里插入图片描述

12.运行成功

在这里插入图片描述
运行成功,但是输出顺序跟想象中不太一样,dll中的print总在最后打印。

到这里,JNI 环境配置就做完了,下一步开始真正实现dll。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值