如何在没有接口的JNA中使用DLL

时间:2012-08-03 14:51:20

标签: java dll jna

花了很多时间学习Python,通过Jython将一系列基于DLL的函数实现到Java中 - 我忘了阅读Jython的文档,缺乏ctypes支持使我的大部分代码无用。

我不想使用JNI

我正在尝试使用其HLLAPI从个人通信中访问pcshll32.dll中的某些功能。

我确实设法使用Python几乎没有问题,在网上找到很多文档和食谱非常容易。

现在我偶然发现了JNA,我遇到了很多麻烦。我几乎找不到有关它的信息,特别是在我试图访问非标准DLL时。

根据我的理解,我需要编写一个pcshll32.class作为接口 - 很像User32.class似乎是一个接口(或者我应该称之为代理...)到User32。 DLL。

嗯,这就是我认为在阅读this之后发生的事情。

那么......我如何导入外部DLL?可能吗?我需要编写接口/代理吗?那里有样品吗?

1 个答案:

答案 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