如何使用Java(JNA)访问dll中的类的函数

时间:2018-08-08 08:24:29

标签: java dll jna jnaerator

我正在尝试通过Java使用JNA在名为 Windows.Devices.PointOfService.dll 的Windows dll中使用CashDrawer类(https://docs.microsoft.com/en-us/uwp/api/Windows.Devices.PointOfService.CashDrawer)的几个函数,此处提供了示例:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/CashDrawer

我使用JNA调用 msvcrt.dll 尝试了一个简单的helloworld,但是在这里和所有示例中,我发现所使用的函数直接在dll内部。 我的问题是我不知道如何在Windows.Devices.PointOfService中访问CashDrawer的功能。

简单的例子:

public interface JNAApiInterface extends Library {
    JNAApiInterface INSTANCE = (JNAApiInterface) Native.loadLibrary("msvcrt", JNAApiInterface.class);

    void printf(String format, Object... args);
}

public static void main(String args[]) {
    JNAApiInterface instance = JNAApiInterface.INSTANCE;
    instance.printf("coucou");
}

我想打开CashDrawer,目前我只能这样做:

public interface JNAApiInterface extends Library {
    JNAApiInterface INSTANCE = (JNAApiInterface) Native.loadLibrary("Windows.Devices.PointOfService", JNAApiInterface.class);

    // ???
}

public static void main(String args[]) {
    JNAApiInterface instance = JNAApiInterface.INSTANCE;
    // ???
}

我没有成功的其他选择是使用JNAerator为 Windows.Devices.PointOfService.dll 生成Java接口,但是我不知道该怎么做。

0 个答案:

没有答案