2016-09-06 53 views
0

Java字符串我在C函数:c char字符*在JNA

void MyFunc(char *value string); 

我在JNA在Java中定义它像

void MyFunc(String value) 

是我的定义好?

+2

'无效MYFUNC(字符*字符串值);'不编译... –

+0

你最可能需要'char16_t *'。 Java'char'不等于C++'char'。 –

+0

您尚未向我们提供足够的信息来回答您的定义是否良好。正如其他人所指出的那样,Java的'String'是不可变的,所以它会映射到'const char *'。您不会提供任何有关“MyFunc()”是否对提供的字符串执行任何操作的信息。对Java字符串的任何C端修改都不会在Java中看到 - 在这种情况下,使用指针或其他Java数据类型可能是更好的选择。 –

回答

0

根据documentation你应该使用const char*(Java中的字符串是不可变的)

+0

但是它也应该使用'char *'。如果你重新分配函数内的指针 - 它不应该影响包装java代码。 –

+0

OP开始于不是'const'的C定义。因此,他的答案是否正确取决于C变量是否可变。 –