如何使用 unsigned int 才能使用 JNA(Java 本机接口)函数?
我使用 JNA 是为了在我的 Java 应用程序中使用 C++ 库。我正在使用 Java 中的接口来使用这些功能。该函数在 C++ 中使用三个参数:一个 unsigned int、一个 const char* 和一个 long*。 JNA 在 Java 中实现了 Strings(根据其文档)以传入 char*。同样,它使用 long[] 传入 long*。然而,我对应该为 unsigned int 传入的类型感到困惑。传入的 char* 代表文件的名称,无论我对第一个参数使用什么类型,它似乎都无法识别该文件。此外,最后一个 long 类型实际上在函数执行后返回一个值。如果我使用short或int类型作为第一个参数,这个数字似乎是正确的,但是,如果我使用long类型作为第一个参数,它是不正确的。有人可以帮忙吗?
举个例子,下面是 C++ 中的实际原型,后面是我目前在 Java 中的接口原型:
int JrConnect(unsigned int id, const char* config_file, long* handle);
public int JrConnect(int[] id, String[] config_file, long[] handle);
I'm using JNA in order to use a C++ library in my Java application. I am using an interface in Java to use these functions. The function uses three arguments in C++: an unsigned int, a const char*, and a long*. JNA implements Strings (according to their documents) in Java to pass in a char*. Likewise, it uses a long[] to pass in a long*. I'm confused, however, about the type that I should pass in for the unsigned int. The char* that is passed in represents the name of the file, and no matter what type I use for the first argument, it does not seem to recognize the file. Furthermore, the last, long type actually returns a value after the function is executed. If I use the short or int type for the first argument, this number seems to be correct, however, if I use the long type for the first argument, it is incorrect. Can anyone help?
For an example, here's what the actual prototype in C++ is followed by what I currently have as the interface prototype in Java:
int JrConnect(unsigned int id, const char* config_file, long* handle);
public int JrConnect(int[] id, String[] config_file, long[] handle);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 JNA 的 IntByReference。
Use JNA's IntByReference.