我是设备驱动程序DLL。我在C#中编写了一个包装器DLL,使用RGiesecke.DllExport尝试从Java应用程序调用C#包装器。
我在Java端使用JNA 4.1并调用包装器dll,如下所示。
IMathFuncs mathFuncs =
(IMathFuncs)Native.loadLibrary("C://path2dll//theDLL.dll", IMathFuncs.class);
我可以成功调用基本的C#" hello world"来自Java的函数。但是当我调用一个使用设备驱动程序类的函数时,我会得到以下错误。
mathFuncs.sayHello(); // runs fine
mathFuncs.useDevice(); // throws invalid memory access err.
Exception in thread "main" java.lang.Error: Invalid memory access
at com.sun.jna.Native.invokePointer(Native Method)
at com.sun.jna.Function.<init>(Function.java:208)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:536)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:513)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:499)
at com.sun.jna.Library$Handler.invoke(Library.java:199)
at $Proxy0.useDevice(Unknown Source)
at MathFuncs.main(MathFuncs.java:16)
我有什么遗失的东西吗?如何让设备驱动程序DLL可用于我的Java应用程序?
提前致谢