我使用 JNA 是为了在我的 Java 应用程序中使用 C++ 库。我正在使用 Java 中的接口(interface)来使用这些功能。该函数在 C++ 中使用三个参数:一个 unsigned int、一个 const char* 和一个 long*。 JNA 在 Java 中实现了 Strings(根据其文档)以传入 char*。同样,它使用 long[] 传入 long*。然而,我对应该为 unsigned int 传入的类型感到困惑。传入的 char* 代表文件名,无论我对第一个参数使用什么类型,它似乎都无法识别该文件。此外,最后一个 long 类型实际上在函数执行后返回一个值。如果我使用short或int类型作为第一个参数,这个数字似乎是正确的,但是,如果我使用long类型作为第一个参数,它是不正确的。有人可以帮忙吗?
举个例子,下面是 C++ 中的实际原型(prototype),后面是我目前在 Java 中作为接口(interface)原型(prototype)的内容:
int JrConnect(unsigned int id, const char* config_file, long* handle);
public int JrConnect(int[] id, String[] config_file, long[] handle);
最佳答案
使用 JNA 的 IntByReference .
关于java - 如何使用 unsigned int 才能使用 JNA(Java native 接口(interface))函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5627307/