• 目的:java代码使用jni获取数据
  • 工具: eclipse + Microsoft visual studio (c++)
  • 业务代码:
  1. Java代码业务实现:

package com.weip.jni;

/**

* 操作步骤:

* 1、进到工程目录,src下

* 2、C:\Users\Administrator>e:

* E:\>cd E:\eclipse-workspace\Wp_NDK_JNI\src

* E:\eclipse-workspace\Wp_NDK_JNI\src>javah -d ../jni com.weip.jni.Test

* 3、刷新eclipse项目出现jni目录,下面有头文件  com_weip_jni_Test.h

* 4、打开visual studio ,引入头文件

*/

public class Test {

//获取字符串

public native String getTestString();

public static void main(String[] args) {

Test test = new Test();

System.out.println(test.getTestString());

}

//加载动态库

//linux:.so(Android也是linux系统)   windows:.dll

static {

//加载.dll动态库

System.loadLibrary("testjni");

}

}

2、c代码的逻辑实现

test.c

最后运行java代码,可以输出一个字符串(通过jni输出)

//分析jni方法:

//一般写法:
//jstring Java_com_weip_jni_Test_getTestString
//(JNIEnv *env, jobject jobj){
//    return (*env)->NewStringUTF(env, "Hello,Jni");
//}

//1.1 分析JNIEXPORT:宏定义(作用:dll动态库中允许该函数被外部调用)
//如果我们不写,编译器自动会加上
//为什么这么写?行业规范(编译动态库的规范)  --固定格式
//1.2 JNICALL:用于约束函数入栈的顺序和堆栈清理规则(注意:window下的规则__stdcall)
//如果删除JNIEXPORT和JNICALL也不会报错,系统编译的时候自动会加上
//1.3 分析方法名称含义 :Java_com_weip_jni_Test_getTestString
//一种命名规范(为了区分方法) 哪个公司哪个项目哪个类的哪个方法  说白了就是唯一标识

JNIEXPORT jstring JNICALL Java_com_weip_jni_Test_getTestString
(JNIEnv *env, jobject jobj){
    return (*env)->NewStringUTF(env,"Hello,Jni");
}

Windows系统下通过JNI调用dll动态库的实现相关推荐

  1. Node.js 调用 dll动态库 以华旭身份证阅读器为例

    需求来源 由于使用Electron使用开发桌面端,同时也需要连接硬件设备,单纯使用js方法无法完成,需要通过Node调用dll动态库方式完成. 版本说明: node v12.18.3 (32位) np ...

  2. JNA框架调用dll动态库(给你整得明明白白)

    java调用dll动态库的方法,总的有三种:JNI.JNA.JNative.其中JNA调用DLL是最方便的.网上文章一大堆,我就不废话了. 使用JNA框架调用DLL动态库,步骤如下: 一.环境准备 1 ...

  3. Java中使用JNI调用本地动态库的方法

    在Java中,要使用动态库,就要使用到 JNI.首先来看看百度百科对JNI的描述:从Java1.1开始,Java Native Interface(JNI)标准成为Java平台的一部分,它允许Java ...

  4. java中调用 dll 动态库的简洁方法 JNative

    Java中调用DLL方法,是通过JNI接口实现的,http://www.ibm.com/developerworks/cn/java/l-linux-jni/ 这里有详细的说明.大概是先用Java写一 ...

  5. java 动态库_java调用dll动态库文件的一般总结

    前一段时间,在项目需求中,需要调用一下第三方的动态库文件,下面是本人一些尝试的经历. 首先需要明白的是,在java中是不能直接调用动态库文件的,因为动态库文件是使用c或是c++编写的,作为一种跨   ...

  6. linux环境下c语言调用lapack,linux系统下C语言调用lapack ,blas库

    在利用C语言编程,经常调用其他的软件包,其中lapack,blas库是最常用的两个库,这里讲下在linux系统下,C语言编程如何调用这两个库: 1.首先讲下blas库的调用,这里以两个向量内积函数为例 ...

  7. Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法

    Windows下查看exe可执行程序或dll动态库所依赖dll动态库的方法 如需转载请标明出处:http://blog.csdn.net/itas109 技术交流:129518033 文章目录 Win ...

  8. bat小工具_小程序反编译工具在windows系统下的调用脚本

    点击上方蓝字可以订阅哦 之前的文章中介绍了小程序的反编译工具,工具在 Linux 系统下使用时执行bingo.sh [xxx.wxapkg]就可以. 有小伙伴不知道在windows系统下如何使用,这里 ...

  9. arch linux arm下载_linux系统下编译给android JNI调用的Gmssl库

    编译给android JNI调用的Gmssl库的方法,网络上并不多.按照叶大强(CSDN账号:hkNaruto)写的<GmSSL Android NDK编译 (版本95c0dba>的帖子编 ...

最新文章

  1. Blender创作你自己的动画短片学习教程
  2. 别再说你不会 ElasticSearch 调优了,都给你整理好了
  3. 管理的实践-彼得.德鲁克
  4. linux 文本搜索命令 grep egrep fgrep 区别
  5. BTree C 语言实例
  6. mysql数据库系统配置文件_MySQL数据库(6)----配置文件 my.cnf 的使用
  7. Ruby中require,load,和include的区别
  8. 146_ACCESS之HR招聘信息管理_64位
  9. 题解【luogu2045 方格取数游戏加强版】
  10. 《我家侯爷不宠我》盛大开机,丹青映画国漫IP再次“破壁”
  11. 高等数学(第七版)同济大学 总习题八 个人解答
  12. vmware tools选项灰色解决办法(ubuntu 14.04)
  13. 去摆摊吧,落魄的Java程序员
  14. 计算机网络八大性能指标
  15. Kubernetes 学习笔记(一)--- 基本概念及利用kubeadm部署K8S
  16. android studio 模拟器内存不足,Android Studio模拟器的问题及解决办法
  17. 重新安装opencv,踩坑。
  18. 相册列表 鼠标悬停显示照片介绍
  19. discord验证无法通过_如何通过Discord的“上线”直播
  20. 火山安卓开发支付宝自动转账功能

热门文章

  1. 使用Python语言求s=a+aa+aaa+aaaa+aa...a的值
  2. UVA10862 - Connect the Cable Wires(递推 + java的大数)
  3. 平板电脑游戏会很快超越家用机游戏吗?
  4. Speedoffice(word)文档中如何添加评论
  5. Apache Iceberg数据湖与Trino的集成
  6. 教你将多段视频画面中的某一帧提取转换为图片格式
  7. 智能语音识别_智能语音识别系统_小程序 智能语音识别 - 云+社区 - 腾讯云
  8. 商业银行智能语音识别技术-笔记
  9. houdini特效学习总结
  10. 杰理之BLE广播【篇】