java - 如何使用 unsigned int 才能使用 JNA(Java native 接口(interface))函数?

标签 java function int jna unsigned

我使用 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/

相关文章:

c# - 将 int[] 数组转换为 ushort[] 数组

java - WebSphere 7 - 过多的垃圾收集会导致内存不足吗?

java - 井字游戏中无法访问的代码、if 语句?

java - 如何使用 java 8 流对对象进行排序

c++ - 如何避免在非构造函数上进行隐式转换?

oracle - oracle 中的分割函数为逗号分隔值并自动排序

java - Android:检索网站 html - 不起作用

来自变量的 Bash 别名

objective-c - 使用 Objective-C 对 int 数组进行排序 - 优化

java - Java 整数类型原始类型是否在转换类型的 MAX_INT 处转换为 "capped"?