2

在花费大量时间学习 Python 以通过 Jython 将一系列基于 DLL 的函数实现到 Java 之后 - 我忘记阅读 Jython 的文档,并且缺乏 ctypes 支持使我的大部分代码无用。

我不想使用 JNI

我正在尝试使用其 HLLAPI 从 Personal Communications访问pcshll32.dll的某些功能。

我确实设法让它与 Python 一起工作,几乎没有问题,在网上找到很多文档和食谱真的很容易。

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

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

好吧,这就是我在阅读本文后认为正在发生的事情。

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

4

1 回答 1

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 提供这个外部库。

对我来说最好的解释是源代码

于 2012-08-03T15:01:29.807 回答