java 调用 jna 时 由于 dll 文件与 jdk 的位数可能有所不同,而报错
我选择将 dll 文件 在visual stadio 中 重写并生成
pom.xml 导入依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/net.java.dev.jna/jna -->
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.1.0</version>
</dependency>
</dependencies>
创建64 位 dll 文件
将x86 换成 x64
源文件 .cpp 是 c++ 的格式 而我将它重命名为 .c 这就是 c 的格式
头文件 JNIdll.h 中添加 函数声明
#pragma once
__declspec(dllexport) int sum(int a, int b);
.c 文件
#include "stdafx.h"
#include "JNIdll.h"
#include <stdio.h>
int sum(int a, int b) {
return a + b;
}
右键项目点击生成
得到 dll 的位置
将dll文件复制粘贴到java 项目的类路径下
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface JNIdll extends Library {
JNIdll instance = (JNIdll)Native.loadLibrary("JNIdll",JNIdll.class);
public int sum(int a,int b);
}
import com.sun.jna.Native;
public class jnadll {
public static void main(String[] args) {
int c = JNIdll.instance.sum(4,60);
System.out.println(c);
}
}