我有一个如下所示的 C API:
int my_function(char** assign_me_a_string);
我基本上需要本机代码来告诉我一个值。如果我做:
char* my_function();
它工作正常。我得到一个可以在 Java 中使用的字符串作为回报。但是我更喜欢使用第一种方法,因为我的所有函数默认返回一个 int (状态值)。
我曾尝试使用各种.i 和这个类型图:
%apply char **STRING_ARRAY { char **assign_me_a_string }
这样做我得到一个为 Java API 生成的 String[]。然后我尝试通过以下方式使用它:
String[] myStringToAssign = new String[1];
my_function(myStringToAssign);
但这似乎只是崩溃。
那么,有没有一种正确的方法可以从 C 代码内部为 Java 字符串赋值?我不想使用数组,我只需要能够取消引用 char** 并在本机代码中为其分配一个字符串,然后可以将其用作 Java 中的 String 对象。