Java字符串我在C函數:c char字符*在JNA
void MyFunc(char *value string);
我在JNA在Java中定義它像
void MyFunc(String value)
是我的定義好?
Java字符串我在C函數:c char字符*在JNA
void MyFunc(char *value string);
我在JNA在Java中定義它像
void MyFunc(String value)
是我的定義好?
是的,您的定義是有效的(當然,除了C++代碼中的錯誤打印外)。
你看JNA文檔:https://jna.java.net/javadoc/overview-summary.html?他們完美地指定要使用的每種數據類型
根據documentation你應該使用const char*
(Java中的字符串是不可變的)
但是它也應該使用'char *'。如果你重新分配函數內的指針 - 它不應該影響包裝java代碼。 –
OP開始於不是'const'的C定義。因此,他的答案是否正確取決於C變量是否可變。 –
'無效MYFUNC(字符*字符串值);'不編譯... –
你最可能需要'char16_t *'。 Java'char'不等於C++'char'。 –
您尚未向我們提供足夠的信息來回答您的定義是否良好。正如其他人所指出的那樣,Java的'String'是不可變的,所以它會映射到'const char *'。您不會提供任何有關「MyFunc()」是否對提供的字符串執行任何操作的信息。對Java字符串的任何C端修改都不會在Java中看到 - 在這種情況下,使用指針或其他Java數據類型可能是更好的選擇。 –