2016-09-06 51 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變量是否可變。 –