Java JNI调用本地方法1(调用C++方法)

一、基础概念
1、JNI(Java Native interface):sun公司提供的JNI是Java平台的一个功能强大的接口,实现java和操作系统本地代码的相互调用功能,系统本地代码通常是由其他语言编写的,如C++。

二、JNI使用步骤
1、定义一个Java的native方法。
2、使用jdk的javah工具,生成包含native方法类的C/C++头文件(.h)。
3、按照生成的C/C++头文件(.h),来写C/C++源文件(.cpp)。
4、编译C/C++源文件生成动态链接库(DLL)。
5、将DLL文件放到系统环境变量PATH配置的路径下(如:jdk的bin或者自己新增一个路径专门放DLL文件)。
6、Java加载DLL文件,调用native方法。

三、完整过程示例
1、创建Java项目,编写一个带有native的类

package cn.test;
public class TestJni {public native void sayHello();
}

2、编译上java文件,通过javah生成C++头文件
(1)、点击compile,编译项目,生成class文件
在这里插入图片描述
(2)、进入编译项目的target/classes目录下,通过javah生成头文件
命令:javah cn.test.TestJni
说明:TestJni指的是TestJni.class文件,不是TestJni.java文件,一定要先编译。
如果还有路径层级,使用.连接。如: cn.zw.test.TestJni
在这里插入图片描述
(3)、查看头文件
在这里插入图片描述
3、创建C++的动态DLL项目,生成DLL文件
(1)、下载Visual Studio 2022工具(其他版本也行,能编译运行C++项目即可),如下标
在这里插入图片描述
(2)、新建项目,选择DLL动态链接库,点击下一步
在这里插入图片描述
(3)、配置项目如下图,项目名称无需一致,点击创建
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/826130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选定进行压缩的卷可能已损坏。请使用chkdsk来修复损坏问题,然后尝试再次压缩该卷

Windows Server 2008R2环境下,进行磁盘重新分区时,想要对系统盘进行“压缩卷”,结果报错提示“选定进行压缩的卷可能已损坏。请使用Chkdsk来修复损坏问题,然后尝试再次压缩该卷。”这是硬盘出现了坏道导致的,硬盘出错无…

中仕公考:教师编制和事业单位d类一样吗?

教师编制和事业单位D类在考试内容、专业要求、晋升途径等方面有很大的不同中仕为大家介绍一下: 考试内容:教师编的考试包括教育综合知识和学科专业知识,有的地区会额外考公共基础知识。事业单位D类的考试更侧重于职业能力倾向测验和综合应用…

Linux的学习之路:14、文件(1)

摘要 有一说一文件一天学不完,细节太多了,所以这里也没更新完,这里部分文件知识,然后C语言和os两种的文件操作 目录 摘要 一、文件预备 二、c文件操作 三、OS文件操作 1、系统文件I/O 2、接口介绍 四、思维导图 一、文件…

uniapp全局监听分享朋友圈或朋友

把大象装进冰箱需要几步: 1、创建shart.js文件 export default{data(){return {//设置默认的分享参数//如果页面不设置share,就触发这个默认的分享share:{title:标题,path:/pages/index/index,imageUrl:图片,desc:描述,content:内容}}},onLoad(){let ro…

若依前后端部署到一起

引用:https://blog.csdn.net/qq_42341853/article/details/129127553 前端改造: 配置打包前缀 修改router.js 编程hash模式: 前端打包:npm run build:prod 后端修改: 添加thymeleaf包,和配置文件 spri…

JAVA 项目<果园之窗>_1

这几天有空看能不能把水果店管理系统整出来,目标是整个网页版本的,以我的电脑做服务器,数据存在mysql中 以我目前的理解整个项目大致可分为前端部分、后端部分、数据库部分,也就这三个部分 目前打开并运行了一个别人的项目&#…

leetcode(474.最大连续1的个数)(python)

看数据范围知,复杂度不超过(nlogn),不过感觉LeetCode很少卡算法时间。 题目要求数组的*****的个数,想到dp动态规划 dp[i][0]表示前i个数字,以第i个元素结尾,全为1的个数 dp[i][1]表示前i个数…

微信流量主、小程序、广告自助引流

微信流量主、小程序、广告自助引流 通过机器人实现自动化流程操作,解放双手,聚焦于核心价值 体验地址: 链接: 点击进入 功能描述: 启动执行时,抓取广告链接数据 对数据进行处理,广告链接形成信息列表并…

React间接实现一个动态组件逻辑

在开发一个浏览器插件的时候,用的plasmo框架和react支持的,里面使用react开发一个菜单功能,但是又不想使用react-router,所以就想着能不能使用一个很简单的方式做一个替代方案?那肯定是可以。 我在引入一个组件后&…

vue2响应式 VS vue3响应式

Vue2响应式 存在问题: 新增属性,删除属性,界面不会更新。 直接通过下标修改数组界面不会自动更新。 Vue2使用object.defineProperty来劫持数据是否发生改变,如下: 能监测到获取和修改属性: 新增的属性…

C++笔记:类和对象(一)

类和对象 认识类和对象 先来回忆一下C语言中的类型和变量,类型就像是定义了数据的规则,而变量则是根据这些规则来实际存储数据的容器。类是我们自己定义的一种数据类型,而对象则是这种数据类型的一个具体实例。类就可以理解为类型&#xff0c…

多标签与多分类的区别

多标签与多分类的区别 多标签多分类样本类别个数一个或多个只有一个输出一个标签维度的向量,每一维度是类别的概率[0.1, 0.6, 0.1, 0.1, 0.8]输出属于每个类别的概率[0.1, 0.6, 0.1, 0.1, 0.1]标签多标签的每一维度都是0或者1,类别可以共存,…

移除元素(C++)

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面…

line 1:20 no viable alternative at input ‘point,‘

背景 遇到一个蛋疼的问题,搞得老夫难受的一,解决了索性记录下 Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession61b0005f] was not registered for synchronization because synchronization is not activ…

coco128数据对象类别中英文对照json格式

中英对照 jsonarray [{id: 0,person: 人 }, {id: 1,bicycle: 自行车 }, {id: 2,car: 汽车 }, {id: 3,motorcycle: 摩托车 }, {id: 4,airplane: 飞机 }, {id: 5,bus: 公交车 }, {id: 6,train: 火车 }, {id: 7,truck: 卡车 }, {id: 8,boat: 船 }, {id: 9,trafficlight: 红绿灯 }…

java学习笔记8

15. 多态 15.1 多态概念 ​ java中**多态(Polymorphism )**是指不同对象在调用相同名称方法时,表现的多种不同行为。例如,要实现一个动物叫的方法,由于每种动物的叫声不同,因此可以在方法中接收一个动物参数,当传入的是猫类时发出猫叫,传入狗类时发出狗的叫声。 ​ ja…

python爬虫-----深入了解 requests 库(第二十五天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

安卓接收后台数据转模型int默认为double

问题:后台登录接口返回userid(int整型10000),app前端(使用okgo)拿到userid(double类型10000.0);导致app前端进行接下来操作如App中a用户使用userid转字符串后“10000.0”…

openAI tts Java文本转语音完整前后端代码 html

Java后端代码 maven 仓库&#xff1a; <!--openAI 请求工具--> <dependency><groupId>com.unfbx</groupId><artifactId>chatgpt-java</artifactId><version>1.1.5</version> </dependency>maven 仓库官方 tts 使用案例…

浅析RED和EN 18031

文章目录 前言欧盟的法律文件什么是REDRED的发展EU 2022/30法规EU 2023/2444RED与EN 18031的关系 前言 提示&#xff1a;本文大致表述了欧盟的一些立法常识&#xff0c;RED的由来与发展&#xff0c;以及它跟EN 18031的关系 因为工作原因&#xff0c;最近稍微研究了一下欧盟即将…