看一下JNA https://github.com/twall/jna/。这是与本机代码通信的 100% 纯 java 方式。
他们有一个名为平台.jar https://github.com/twall/jna/#platform其中封装了一些最常见的原生API。
虽然我知道它是什么,但我没有使用过平台,所以我无法指出你在哪里可以找到你要找的东西。但根据我的全球 JNA 经验,这应该会有所帮助很多 !!!
(回答结束)
对于那些想知道它是如何工作的人(在他们的主页上有解释)......好吧,假设他们已经为您处理了本机部分,以便您可以专注于 java 端。
主库 (jna.jar) 捆绑了许多用于主要操作系统/体系结构的本机库(.dll、.so、.dylib)以及操作它们的 java 端(这解释了 jar 的大小:~ 1 Mo)。
当您想使用包含以下内容的多操作系统库名称“A.dll”、“A.so”或“libA.dylib”时:
int doSomething(char* aString ,byte* aByteArray, long* arraySize)
只需编写以下内容,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)
}
并使用它:
new LibAWrapper().doSomething("Hello World",....
这意味着如果 Platform.jar 不适合您的需求,您应该可以轻松地围绕您想要的本机库编写包装器