如何使用JNA将函数返回字符串数组(const char **)映射到Java?

时间:2016-04-12 14:12:20

标签: java c++ jna

我正在尝试使用Java中的C ++库和JNA。在库的头文件中,我有以下方法声明:

extern "C" const char** foo(void* bar);

返回数组的长度是已知的,其中各个元素的最大长度也是已知的。如何在Java中映射和使用此功能?我尝试了以下Java声明:

String[] foo(Pointer bar);
Pointer foo(Pointer bar);
StringArray foo(Pointer bar);

当我致电foo时,它们都会导致以下错误:

  

线程“main”中的异常java.lang.Error:无效的内存访问

(此问题与this question有关,但不完全相同。)

1 个答案:

答案 0 :(得分:1)

ng-click是您想要的,然后使用Pointer foo(Pointer bar)方法提取您想要的数据。

Pointer

无效的内存访问可能是由于您传入的某些数据未按照被调用方的预期方式进行格式化。