java jna char **
时间: 2023-07-23 12:29:09 浏览: 122
Java JNA库提供了访问本地C语言函数的接口,其中包括访问char **类型的函数参数。在Java中使用JNA调用C函数时,char **类型的参数通常会被表示为指向指针数组的指针。
以下是一个示例,演示如何在Java中使用JNA访问char **类型的函数参数:
C代码:
```
void func(char **strs, int count) {
for (int i = 0; i < count; i++) {
printf("%s\n", strs[i]);
}
}
```
Java代码:
```
import com.sun.jna.*;
import com.sun.jna.ptr.*;
public interface MyLibrary extends Library {
MyLibrary INSTANCE = (MyLibrary) Native.loadLibrary("mylib", MyLibrary.class);
void func(PointerByReference strs, int count);
}
public class Main {
public static void main(String[] args) {
String[] strs = new String[] {"hello", "world"};
Pointer[] ptrs = new Pointer[strs.length];
for (int i = 0; i < strs.length; i++) {
ptrs[i] = new Memory(strs[i].length() + 1);
ptrs[i].setString(0, strs[i]);
}
PointerByReference pbr = new PointerByReference();
pbr.setPointerArray(ptrs);
MyLibrary.INSTANCE.func(pbr, strs.length);
}
}
```
在上面的示例中,我们首先将Java字符串数组转换为指针数组,然后使用PointerByReference将其传递给C函数。在C函数中,我们可以通过循环访问指针数组中的每个字符串。
阅读全文