在花了很多时间学习Python通过Jython将一系列基于DLL的函数实现到Java中之后,我忘记阅读Jython的文档,而缺少ctypes支持使我的大多数代码无用。
我不想使用JNI
我正在尝试使用的HALAPI从pcshll32.dll中访问某些功能。
我确实设法使其几乎可以毫无问题地与Python一起使用,在网络上找到很多文档和食谱确实非常容易。
现在,我偶然发现了JNA,并且遇到了很多麻烦。我几乎找不到有关它的信息,特别是当我尝试访问非标准DLL时。
据我了解,我需要编写一个pcshll32.class来作为接口-就像User32.class似乎是一个到User32.dll的接口(或者我应该称其为代理...)。
好吧,这就是我阅读this后发生的事情。
那么...我如何导入外部DLL?可能吗?我需要编写接口/代理吗?那里有样品吗?
最佳答案
您应该这样做:
public interface PcShll32 extends StdCallLibrary { //StdCallLibrary is for Windows functions
PcShll32 INSTANCE = (PcShll32) Native.loadLibrary(
"pcshll32", PcShll32.class, W32APIOptions.DEFAULT_OPTIONS); //Options are for Win32API
// your methods
}
当然,您必须为JNA提供此外部库。
对我来说,最好的解释是the source code