侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

JNA

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 91 阅读 / 1,123 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
/ 后端 / JAVA / native / JNA
java native access

maven 导 jar 包
// https://mvnrepository.com/artifact/com.sun.jna/jna compile group: 'com.sun.jna', name: 'jna', version: '3.0.9'

例子
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform; 

/** Simple example of native library declaration and usage. */

public class HelloWorld {

public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary)
Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
CLibrary.class);
void printf(String format, Object... args);
}

public static void main(String[] args) {
CLibrary.INSTANCE.printf("Hello, World/n");
for (int i=0;i < args.length;i++) {
CLibrary.INSTANCE.printf("Argument %d: %s/n", i, args[i]);
}
}





Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'Everything64': ÕҲ»µ½ָ¶¨
说这个错误是找不到dll
用绝对路径
Everything instanceDll = (Everything) Native.loadLibrary("D:\\Documents\\MediaCenter\\Everything-SDK\\dll\\Everything64.dll", Everything.class);


2、在win(dll)和Linux(so)环境下放置位置
在window环境下:
如果只是单独类的编译运行,放在JNA接口同级目录即可。
如果说在IDE中访问,则将DLL放到jdk/bin或jdk/jre/bin目录下即可。
在Linux环境下:将.so放到linux-x86-64目录下,该目录为64位系统所支持的目录,32位的同理。

0

评论区