看看JNA.它是一种100%纯Java方式与本机代码进行通信.
他们有一个名为Platform.jar的辅助库,它包含一些最常见的本机API.
虽然我知道它是什么,但我还没有使用过平台,所以我无法指出你在哪里可以找到你想要的东西.但从我的全球JNA经验来看,这应该有所帮助!
(答案结束)
对于那些想知道它是如何工作的人(它在他们的主页上有解释)......好吧,让我们说他们已经为你处理了原生部分,这样你就可以专注于java端.主librairy(jna.jar)捆绑了许多本机库(.dll,.so,.dylib)用于主要的os /架构和java端来操作它们(这解释了jar的大小:~1 Mo).
当您想要使用多个OS lib名称"A.dll","A.so"或"libA.dylib"时,其中包含以下内容:
int doSomething(char* aString ,byte* aByteArray, long* arraySize)
Run Code Online (Sandbox Code Playgroud)
只需编写以下内容,JNA将完成剩下的工作:
public class LibAWrapper{
//tell JNA to link with native library
Native.register("A");
//Type mapping in java
public native int doSomething(String aString ,byte[] aByteArray, NativeLongByReference arraySize)
}
Run Code Online (Sandbox Code Playgroud)
并使用它:
new LibAWrapper().doSomething("Hello World",....
Run Code Online (Sandbox Code Playgroud)
这意味着如果Platform.jar不适合您的需求,您应该很容易在本机库周围编写一个包装器