花了很多时间学习Python,通过Jython将一系列基于DLL的函数实现到Java中 - 我忘了阅读Jython的文档,缺乏ctypes支持使我的大部分代码无用。
我不想使用JNI
我正在尝试使用其HLLAPI从个人通信中访问pcshll32.dll中的某些功能。
我确实设法使用Python几乎没有问题,在网上找到很多文档和食谱非常容易。
现在我偶然发现了JNA,我遇到了很多麻烦。我几乎找不到有关它的信息,特别是在我试图访问非标准DLL时。
根据我的理解,我需要编写一个pcshll32.class作为接口 - 很像User32.class似乎是一个接口(或者我应该称之为代理...)到User32。 DLL。
嗯,这就是我认为在阅读this之后发生的事情。
那么......我如何导入外部DLL?可能吗?我需要编写接口/代理吗?那里有样品吗?
答案 0 :(得分:2)
你应该这样做:
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