我是 JNA 的新手,需要通过 Java 系统的套接字连接将数据发送到遗留 C 系统。我已获得 .dll 和 .h 文件。
我必须使用 .h 文件定义访问 C 系统中的函数。
我加载了 .dll,当我访问 dll 中的函数时,我得到 IllegalArgumentException
public static void main(String[] args) {
Arg arg = new Arg();
ExampleDLL exampleDLL = ExampleDLL.INSTANCE;
System.out.println(exampleDLL.someFunctionInDLL(arg));
}
public interface ExampleDLL extends Library {
ExampleDLL INSTANCE = (ExampleDLL) Native.loadLibrary("exampleDLL.dll", ExampleDLL.class);
int someFunctionInDLL(Arg arg);
}
public class Arg {
public Byte[] var1 = new Byte[9];
public Byte[] var2 = new Byte[5];
// Getters and Setters....
}
来自.h 文件:
typedef struct
{
char var1[9];
char var2[5];
}Arg;
int someFunctionInDLL(Arg *dr);
我想我已经成功加载了 dll,但是当我尝试访问 dll 函数时:
Exception in thread "main" java.lang.IllegalArgumentException: Unsupported argument type com.*.*.*.Arg at parameter 0 of function someFunctionInDLL
帮助将不胜感激。有点坚持这个了一段时间。提前致谢。
慕码人2483693
相关分类