import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
// 定义一个接口,用于加载动态链接库中的函数
public interface CLibrary extends Library {
// 加载系统的C库
CLibrary INSTANCE = Native.load(Platform.isWindows() ? "msvcrt" : "c", CLibrary.class);
// 声明要调用的C库函数
void printf(String format, Object... args);
}
public class JNASimpleExample {
public static void main(String[] args) {
// 通过JNA调用C库中的printf函数
CLibrary.INSTANCE.printf("Hello, World! %d\n", 123);
}
}
CLibrary 接口:
CLibrary
是一个接口,继承自 Library
。它用于定义我们要调用的本地库中的函数。INSTANCE
是一个静态变量,使用 Native.load
方法加载系统默认的C库(在Windows上是 msvcrt.dll
,在其他平台上是 libc.so
)。printf 方法:
printf
方法声明了我们想要调用的C库中的 printf
函数。它接受一个格式化字符串和可变参数列表。JNASimpleExample 类:
main
方法中,我们通过 CLibrary.INSTANCE.printf
调用了C库中的 printf
函数,并传入了一个格式化字符串和一个整数参数。这个例子展示了如何使用JNA(Java Native Access)来调用本地C库中的函数。
上一篇:java sublist
下一篇:java异步
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站