Java使用JNA调用C文件

news2024/11/25 6:12:03

1.构建项目

准备最简单的maven项目,结构如下:
在这里插入图片描述
引入依赖:

<dependency>
      <groupId>net.java.dev.jna</groupId>
      <artifactId>jna</artifactId>
      <version>5.3.1</version>
    </dependency>

2.构建c文件和so文件

在resource目录下构建:

 #include <stdio.h>
 test() {
  printf("hello world\n");
}

编译生成so:

gcc test.c -fPIC -shared -o test.so

3.编写解析类和测试类

package org.linx;

import com.sun.jna.Library;
import com.sun.jna.Native;

public interface CLibrary extends Library {
    CLibrary INSTANCE = Native.loadLibrary("test.so", CLibrary.class);

    /**
     * 初始化SDK 注意:调用SDK其他接口前必须先调用此接口!
     */
    void test();

}

package org.linx;

import junit.framework.TestCase;
import org.junit.Test;

public class CLibraryTest extends TestCase {

    @Test
    public void testTest() {
        CLibrary.INSTANCE.test();
    }
}

tips:如果要把该项目打包为jar供其他项目使用,需要将so文件放置在特定目录下

在这里插入图片描述

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

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

相关文章

2023-7-12-第十七式状态模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

IMPALA 查询优化之元数据

目录 说明 背景 问题复现 环境 sql 排查 分析过程 结果分析 总结 说明 sql优化中重要的一环是查询改写&#xff0c;一个表的元数据有利于sql优化器准确的评估sql代价&#xff0c;获取最佳的sql执行计划&#xff0c;如下图所示&#xff0c;本文验证通过加载刷新impala …

Maya文件加载缓慢,这样处理就可以

将场景加载到Maya中时&#xff0c;需要较长时间才能打开场景。 有时&#xff0c;CPU使用率可能会达到100%。 原因&#xff1a; 在文件上工作一段时间后&#xff0c;场景通常会与未使用的显示层、集和节点混淆。这些未使用的图元可能会导致打开文件时出现滞后。 解决方案&…

CMU 15-445 -- Query Processing - 07

CMU 15-445 -- Query Processing - 07 引言Query ProcessingProcessing ModelIterator ModelMaterialization ModelVectorization Model小结 Access MethodsSequential ScanZone MapsLate MaterializationHeap Clustering Index ScanMulti-index ScanIndex Scan Page Sorting E…

文件操作--按格式读写文件

C语言允许按指定格式读写文件。函数fscanf&#xff08;&#xff09;用于按指定格式从文件读数据。其函数原型为&#xff1a; int fscanf (FILE *fp, const char *format ,...)&#xff1b; 其中&#xff0c;第一个参数为文件指针&#xff0c;第2个参数为格式控制参数&#x…

2023届网络安全岗秋招面试题及面试经验分享

Hello&#xff0c;各位小伙伴&#xff0c;我作为一名网络安全工程师曾经在秋招中斩获&#x1f51f;个offer&#x1f33c;&#xff0c;并在国内知名互联网公司任职过的职场老油条&#xff0c;希望可以将我的面试的网络安全大厂面试题和好运分享给大家~ 转眼2023年秋招已经到了金…

Linux ❀ Openssh 8.9p1源码升级教程

文章目录 升级操作注意事项&#xff1a;1. 安装依赖2. 执行升级2.1 上传压缩包并保存配置2.2 开始升级 升级操作注意事项&#xff1a; 编译过程需要依赖&#xff0c;必须安装完成!!!SSH服务升级过程可能会导致无法远程连接服务器!!!若必须远程登录必须确认telnet服务可用!!!升…

3D格式转换工具HOOPS Exchange功能大盘点:快速、准确的CAD数据转换SDK!

HOOPS Exchange SDK是一套C软件库&#xff0c;使开发团队能够快速将可靠的二维和三维CAD导入和导出到他们的应用程序中&#xff0c;访问广泛的数据&#xff0c;包括边界表示&#xff08;B-REP&#xff09;、产品制造信息&#xff08;PMI&#xff09;、模型树、视图、持久性ID、…

C语言—模拟实现memcpy,memmove

1.memcpy函数的介绍与实现 函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果source和destination有任何的重叠&#xff0c;复制的结果都是未定义的。 void * memcpy ( void * destination, const v…

MySQL原理探索——30 答疑文章(二):用动态的观点看加锁

在第20和21篇文章中&#xff0c;介绍了 InnoDB 的间隙锁、next-key lock&#xff0c;以及加锁规则。 今天这篇答疑文章的主题&#xff0c;即&#xff1a;用动态的观点看加锁。 为了方便理解&#xff0c;我们再一起复习一下加锁规则。这个规则中&#xff0c;包含了两个“原则”、…

电子地图对客户端电脑配置要求

二三维地图是基于canvas和webgl在前端进行的实时渲染&#xff0c;所以首先保证您的客户端是一个具有独立显卡的PC机&#xff0c;而不是虚拟机或低配机器。 其次&#xff0c;性能问题与显示器分辨率以及显卡能力息息相关&#xff0c;通常来说屏幕分辨率越高&#xff0c;越消耗性…

做跨境电商必懂的五大流量运营逻辑,带你玩转流量市场!

一、你上一家是做什么类目的&#xff0c;你们前名是谁&#xff0c;分别是什么样的流量来源? 商家排名一般有四个维度&#xff0c;弟一个维度是消量弟一&#xff0c;弟二个维度是销售额弟一&#xff0c;第三个维度是流量弟一&#xff0c;第四个维度利润弟一。 只要我们找出来自…

【IMX6ULL驱动开发学习】18.中断下半部(tasklet、工作队列、中断线程化)

下图表述了Linux内核的中断处理机制&#xff0c;为了在中断执行时间尽量短和中断处理需完成的工作尽量大之间找到一 个平衡点&#xff0c; Linux将中断处理程序分解为两个半部&#xff1a; 顶半部&#xff08;Top Half&#xff09; 和底半部&#xff08;Bottom Half&#xff09…

centos7安装、使用webbench

简言 1. linux下web服务器性能压测工具有很多&#xff0c;webbench就很不错&#xff0c;而且安装使用都很简单 2. webbench不但能对静态页面的压测&#xff0c;还能对动态页面&#xff08;ASP,PHP,JAVA,CGI&#xff09;进行压测。而且支持对含有SSL的安全网站&#xff0c;例如…

Spring cloud alibaba 整合 Sentinel

Sentinel详解 Docker安装1、拉取镜像2、运行容器访问 整合 spring-cloud-alibaba1、引入Maven依赖2、配置控制台3、编写控制器4、启动Sentinel访问自定义异常处理统一异常处理 整合 OpenFeign引入Maven依赖&#xff1a; 配置&#xff1a;编写 Feign 实现指定 Feign 容错类控制器…

ROS2在改造ros1时,报警相关库异常排查

一、在make时&#xff0c;存在以下报警&#xff0c;检查h中是已经包含相关的头文件了&#xff0c;并且也已改为ros2的格式。 二、解决&#xff1a; 检查发现&#xff0c;在CMakelists.txt中未添加相关依赖包&#xff0c;重新添加后&#xff0c;报警解除&#xff0c;编译通过。…

商家们的“疗效”焦虑,巨量引擎、阿里妈妈、腾讯广告们都在怎么满足?

文 | 螳螂观察 作者 | 青月 有人的地方就有营销。 虽然这是一门永不褪色的“生意”&#xff0c;但在增量见顶、红利消失的互联网&#xff0c;数字营销变得越来越听不见“水响”。 就连在号称“史上最卷”的今年618&#xff0c;同台竞技的各大数字营销服务商都在强调自己的“…

difflib 比较文本相似度,找出错误值

在日常的数据分析过程中&#xff0c;我们可能会遇到这样的问题。在处理数据时&#xff0c;有的文本内容是同一类目&#xff0c;但是由于手工输入错误 或者大小写的问题&#xff0c;可能会造成将产品分到不同的类目下&#xff0c;这时候就需要对数据进行清洗。如何实现快速比较…

Selenium基础篇之屏幕截图方法

文章目录 前言一、用途1.捕获页面错误2.调试测试用例3.展示测试结果4.记录页面状态 二、方法1. save_screenshot2. get_screenshot_as_file3. get_screenshot_as_png4. get_screenshot_as_base64 总结 前言 大家好&#xff0c;我是空空star&#xff0c;本篇给大家分享一下Selen…

IDEA+SpringBoot + Mybatis + Shiro+Bootstrap+Mysql智慧仓库系统

IDEASpringBoot Mybatis ShiroBootstrapMysql智慧仓库系统 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.主页3.货位一览4.入库单5. 库存明细6. 呆滞过期报表7. 转库记录8.入库记录9.出库记录10.出库单11.物料信息12.仓库设置13.用户管理14.操作员管理15.角色管理16.账…