Java中使用C代码

news2024/12/29 8:50:23
开发工具: 
Intellij Idea 与 Visual Studio

使用方式: 
Visual生成.dll文件(Windows .dll文件, Linux .so文件);
jdk添加.dll文件, Idea java 采用native方式注册与使用c代码.

1. 如下图, 打开idea,新建class Demo, 通过命令行生成Demo.h

public class Demo {
    public native void sayHello();
}

在这里插入图片描述

2. 打开Visual, 新建DLL项目, 这里我命名为Dll2。
将Demo.h D:/jdk8/include/jni.h 及 D:/jdk8/include/win32/jni_md.h 这三个文件复制到projects/Dll2中
然后右键头文件,添加,现有项,将这三个文件加入到头文件中

在这里插入图片描述

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

3. 修改dllmain.cpp文件,实现Demo.h中的方法

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "pch.h"
#include "Demo.h"
#include "jni.h"
#include <stdio.h>

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

4. 点击生成, 生成Dll2
在这里插入图片描述
在这里插入图片描述5.将Dll2.dll复制到 D:/jdk8/bin文件中, 运行程序

public class Main {
    static{
        System.loadLibrary("Dll2");
    }
    public static void main(String[] args) {
        new Demo().sayHello();
    }
}

在这里插入图片描述

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

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

相关文章

使用kubectl连接远程Kubernetes(k8s)集群

使用kubectl连接远程Kubernetes集群 环境准备下载kubectl下载地址 安装kubectl并处理配置文件Windows的安装配置安装kubectl拉取配置文件安装kubectl拉取配置文件kubectl命令自动补全 Linux的安装配置安装kubectl拉取配置文件kubectl命令自动补全 环境准备 你需要准备一个Kube…

Centos7使用nginx搭建rtmp流媒体服务器

为什么写这篇文章 2023年10月份&#xff0c;公司系统中有个需求&#xff0c;需要使用摄像头记录工程师在维修设备时的工作状态&#xff0c;找到了一家做执法记录仪的厂商&#xff0c;通过厂商发过来的文档了解到该执法记录仪支持通过rtmp协议推流至服务器&#xff0c;第一次接…

redis 管道 pipeline

原生批量命令 VS pipeline 原生批量命令是原子性&#xff08;mset、mget&#xff09;&#xff0c;pipeline是非原子性原生批量命令一次只能执行一种命令&#xff0c;pipeline支持批量执行不同的命令原生批命令是服务端实现&#xff0c; pipeline 需要服务端与客户端共同完成 …

锁降级 ReentrantReadWriteLock

锁降级 ReentrantReadWriteLock 所谓降级&#xff0c;可以通过一个例子理解&#xff0c;一般都是写的权限大&#xff0c;读的权限小&#xff0c;从写到读自然是降级&#xff0c;这是通俗的理解。 锁降级&#xff1a;同一个线程先获取写锁&#xff0c;在写锁未释放的情况下&…

零编程开发数据可视化大屏须知

随着综合分析多业务系统数据能力的提升&#xff0c;以及将复杂数据可视化效果的加强&#xff0c;数据可视化大屏越来越受到各行各业的喜爱&#xff0c;经常可以在各类博览中心、会议中心、监控中心场合中看到它们的身影。这些数据可视化大屏或用于展示企业经营实力&#xff0c;…

指定加拿大|环境科学老师获阿尔伯塔大学邀请函

U老师入选了省公派出国项目&#xff0c;其指定加拿大&#xff0c;并要求专业为世界排名领先&#xff0c;或者是能填补国内科研和技术空白的短板学科。我们利用广泛资源&#xff0c;开展精准申请&#xff0c;先后得到多所大学反馈&#xff0c;并获得4所大学的邀请函&#xff0c;…

【pytorch】多GPU同时训练模型

文章目录 1. 基本原理单机多卡训练教程——DP模式 2. Pytorch进行单机多卡训练步骤1. 指定GPU2. 更改模型训练方式3. 更改权重保存方式 摘要&#xff1a;多GPU同时训练&#xff0c;能够解决单张GPU显存不足问题&#xff0c;同时加快模型训练。 1. 基本原理 单机多卡训练教程—…

AWS AD Connector 的网络配置

配置 AWS 的 AD Connector 通常遇到的都是些网络问题,且 AD Connector 本身屏蔽了一些网络细节,使得查找root cause往往有点困难,本文就把 AD Connector 网络问题梳理一下。 首先,需要搞清楚的是:AD Connector 是 Microsoft Active Directory 的一种代理,IAM可以通过它联…

如何用CRM客户管理系统有效管理客户

客户是企业重要的收益来源和可持续发展的基础&#xff0c;客户转化和留存率时刻影响着企业的发展。企业要实现更多客户转化&#xff0c;就要科学有效地管理客户。下面说说CRM客户管理系统如何有效管理客户&#xff1f; 一、多渠道获取客户 CRM系统能够帮助企业进行多渠道沟通…

充气膜结构的应用领域

由于充气膜结构具有丰富多彩的造型&#xff0c;优异的建筑特性、结构特性和适宜的经济性等其他传统建筑无法比拟的优势&#xff0c;因此备受人们青睐&#xff0c;被应用于工业、民用、军事等许多领域中&#xff0c;具有广阔的应用前景。 充气膜结构的主要应用领域包括&#xff…

Java另一棵树的子树

目录 1.题目描述 2.题解 思路分析 具体实现 完整代码 1.题目描述 给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 二叉树 tree 的一棵子树包括…

笔记本外接显示器,edge浏览器播放视频黑屏

记录一下解决的办法 笔记本&#xff1a;联想拯救者R720 外接显示器后&#xff0c;用Edge在B站看视频有时会黑屏 网上搜了一圈&#xff0c;可能是因为笔记本连到了集显导致的 查看了一下显示器&#xff0c;确实连的是集显&#xff0c;找了联想客服&#xff0c;说这个是默认的&a…

若依微服务前后端部署启动流程(只记录)

若依官网&#xff1a;https://www.ruoyi.vip/ 若依源码下载&#xff0c;直接zip既可&#xff1a;RuoYi-Cloud: &#x1f389; 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统&#xff0c;同时提供了 Vue3 的版本 下载解压&#xff0c;导入 idea&…

【已验证】微信小程序开发-绑定数据23.10.09

四. 绑定数据 WXML页面里的动态数据都是来自.js 文件Page的data&#xff0c;数据绑定就是通过双大 括号&#xff08;{{}}&#xff09;将变量包起来&#xff0c;在WXML页面 里将数据值显示出来。 <!--pages/product/product.wxml--> <view> {{ message }} </vi…

tortoise创建本地仓库

1.安装git和tortoise 推荐 TortoiseGit的安装与配置方法 以及 Git TortoiseGit 配置步骤以及本地版本管理 这里记录一下我遇到的问题 1.右键没有创建本地版本库 2 .创建了但是克隆不了 后续专有 一般选专有网络 注意自行谨慎选择 自行负责

6.Docker搭建RabbitMQ

1、端口开放 如果在云服务上部署需在安全组开通一下端口&#xff1a;15672、5672、25672、61613、1883。 15672(UI页面通信口)、5672(client端通信口)、25672(server间内部通信口)、61613(stomp 消息传输)、1883(MQTT消息队列遥测传输)。 2、安装镜像 docker pull rabbitmq 3、…

【ARM CoreLink 系列 6 -- DMC-400控制器简介】

文章目录 1.1 DMC-400 简介1.1.1 DFI&#xff08;DDR PHY Interface&#xff09;1.1.2 DFI 接口组1.1.3 DMC-400 兼容协议1.1.4 DMC-400 特性1.1.5 DMC-400 Interface 1.1 DMC-400 简介 DMC-400是一个由ARM开发、测试和授权的动态内存控制器&#xff0c;同时 DMC-400也是一个符…

jmeter使用csv进行参数化及(运行后出现乱码错误解决)

目录 jmeter使用csv进行参数化 1、准备参数化文本内容&#xff1a;mac没有自带的txt文本编辑器&#xff0c;笔者是在word中新建的然后保存成txt文档 2、进入jmeter中&#xff0c;在线程组中右键添加--配置元件--csv数据文件设置 3、将设置的变量配置到运行脚本中 4、进入线…

InfiniBand网络带宽从SDR、DDR、QDR、FDR、EDR、HDR到NDR发展

InfiniBand&#xff08;直译为 “无限带宽” 技术&#xff0c;缩写为IB&#xff09;是一个为大规模、易扩展机群而设计的网络通信技术。可用于计算机内部或外部的数据互连&#xff0c;服务器与存储系统之间的直接或交换互连&#xff0c;以及存储系统之间的互连。 InfiniBand最重…

部署zabbix监控服务器(第七课)

部署zabbix监控服务器(第七课) 图解 Zabbix是一个开源的网络监控及报警平台&#xff0c;它可以检测并收集各种系统的性能数据&#xff0c;包括网络设备、服务器、应用程序和虚拟机等&#xff0c;并提供可视化的监控报告&#xff0c;帮助用户发现系统问题并进行及时处理。以下是…