【问题标题】:How can I use a DLL with JNA that does not have an interface如何在没有接口的 JNA 中使用 DLL
【发布时间】:2012-08-03 14:51:19
【问题描述】:

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

我不想使用 JNI

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

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

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

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

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

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

【问题讨论】:

    标签: java dll jna


    【解决方案1】:

    你应该这样做:

    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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多