java native方法调用dll(visual studio 2017)

1 E:\workspace\目录下新建文件夹jniTest,新建java文件Test.java

编写Test类:

public class Test {
	
	static {
// System.loadLibrary("JNICPPDEMO");
        System.load("c:\\Users\\86158\\source\\repos\\Dll1\\x64\\Debug\\DLL1.dll");

    }

    public static void main(String a[]){
        Test t = new Test();
        t.doPrint("xiao an lu !");

        t.doPrint(t.add(9,6)+"");
    }

    public native String doPrint(String name);

    public native int add(int a,int b);
}

2 、打开dos命令窗口 命令: javac Test.java 编译生成Test.class, javah Test 生成Test.h头文件

3、这里咱们用visual studio 2017创建dll

一、打开visual studio 2017 文件--》新建--》项目--》windos 桌面--》具有导出项的(DLL)动态链接库--》确定

 二、项目--》Dll1属性--》配置属性--》VC++目录--》包含目录 (注意:根据系统切换平台到X64)

在包含目录中添加Test.h的目录,

以及本地jdk安装目录下的两个目录:

C:\Program Files\Java\jdk1.8.0_231\include\win32

C:\Program Files\Java\jdk1.8.0_231\include

三、 新建Test.cpp 编写代码,其中Java_Test_doPrint方法名就对应Test.h里面的方法

#include "jni.h"

#include "pch.h"

#include "string.h"
#include "Test.h"

	JNIEXPORT jstring JNICALL Java_Test_doPrint
	(JNIEnv * env, jobject o, jstring str) {
		const char *c_str = NULL;
		c_str = env->GetStringUTFChars(str, false);
		printf(c_str);
		return str;
	}

	JNIEXPORT jint JNICALL Java_Test_add
	(JNIEnv * env, jobject o, jint a, jint b) {
		return a + b;
	}

保存后,生成--》生成解决方案  在最下面可见生成成功DLL1.dll文件 其路径:

注:Test.java 中static块中加载的dll路径System.load("c:\\Users\\86158\\source\\repos\\Dll1\\x64\\Debug\\DLL1.dll");

 整个过程就已经完成,java Test运行Test 类 输出结果可见 成功调用了c 语言方法 

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值