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

目 录CONTENT

文章目录

JNA

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 160 阅读 / 284 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
/ 后端 / 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

评论区