程序员开发实例大全宝库

网站首页 > 编程文章 正文

Java,JNA框架,运行期间动态调用系统本地库,动态调用DLL案例

zazugpt 2024-08-24 02:23:52 编程文章 17 ℃ 0 评论

JNA

JNA(Java Native Access )

JNA框架,开源Java框架,提供一组Java工具类用于在运行期间动态访问系统本地库(native library),不需要编写任何Native/JNI代码,在一个Java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射。

JNA调用C/C++的过程

代码案例

DLL准备

动态链接库的创建与使用,Visual Studio 2022,保存为:d:\MyData\Dll1.dll。

Java代码

pom.xml

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

Dll1.java

package com.what21.jna;

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

public interface Dll1  extends Library {
    //1、动态库拷贝到Java工程目录下
    //MyDll mydll = (MyDll) Native.loadLibrary("Dll1.dll",MyDll.class);
    //2、动态库拷贝不在Java工程目录下,指定绝对路径
    Dll1 dll1 = (Dll1) Native.loadLibrary("D:\\MyData\\Dll1.dll",Dll1.class);

    //c或者c++中的方法
    int max_number(int a, int b);
    int min_number(int a, int b);
}

Main.java

package com.what21.jna;

public class Main {

    public static void main(String[] args) {
        int max_number = Dll1.dll1.max_number(4444, 3333);
        System.out.println("max_number=" + max_number);
        int min_number = Dll1.dll1.min_number(4444, 3333);
        System.out.println("min_number=" + min_number);
    }

}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表