2016-09-06 5 views
0

Ich habe Funktion in C:C char * zu Java-String in JNA

void MyFunc(char *value string); 

Ich sehe es in JNA in Java wie

void MyFunc(String value) 

Ist meine Definition gut?

+2

'Leere MyFunc (char * Wert string);' lässt sich nicht kompilieren ... –

+0

Sie am meisten wahrscheinlich brauchen 'char16_t *'. Java 'char' ist nicht das Äquivalent von C++' char'. –

+0

Sie haben uns nicht genügend Informationen zur Verfügung gestellt, um zu beantworten, ob Ihre Definition gut ist. Wie andere bereits angedeutet haben, ist Javas "String" unveränderlich, so dass es auf ein "const char *" abgebildet würde. Sie geben keine Informationen darüber, ob 'MyFunc()' irgendeine Manipulation an der angegebenen Zeichenfolge durchführt. Jegliche C-seitige Änderungen an der Zeichenkette würden niemals in Java zu sehen sein - in diesem Fall könnte die Verwendung eines Pointers oder eines anderen Java-Datentyps eine bessere Wahl sein. –

Antwort

0

Nach documentation zu verwenden, sollten Sie const char* (Java Strings sind unveränderlich)

+0

Aber es sollte auch mit 'char *' funktionieren. Wenn Sie den Zeiger innerhalb der Funktion neu zuordnen, sollte dies keinen Einfluss auf den Java-Code haben. –

+0

OP beginnt mit einer C-Definition, die nicht "const" ist. Ob seine Antwort richtig ist, hängt daher davon ab, ob die C-Variable änderbar ist oder nicht. –