【发布时间】:2019-06-09 14:36:47
【问题描述】:
JNA 二维数组
我的 C 函数是
void func(void** bufs, int numBufs);
Tye C 代码需要一个指向字节数组的指针数组。 func() 知道每个字节数组的长度并用数据填充它们。
JNA 签名是什么?
这个看似简单的问题我折腾了两天,没破解。
在 Java 方面,我有 DirectBuffer bufs[],其目的是让 C 函数用数据填充 bufs[]。
我曾期望我可以将 JNA 签名声明为
public static native boolean func(Pointer[] bufs, int numBufs);
然后构造一个Java指针数组,每个指针为new Pointer(db.address());
但是,虽然我可以构造指针的 java 数组,但我得到了错误:
java.lang.IllegalArgumentException: class [Lcom.sun.jna.Pointer; is not a supported argument type (in method func in class SomeLib)
我已经进行了很长时间的实验,但无济于事。我查看了 StackOver flow 上的所有 JNA 示例,但没有一个完全适合。
我正在通过 Maven 使用 JNA
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.3.1</version>
</dependency>
感谢任何帮助。
【问题讨论】:
标签: jna