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?
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?
Ja, Ihre Definition ist gültig (außer Druckfehler in Ihrem C++ - Code, natürlich).
Haben Sie sich die JNA-Dokumentation angesehen: https://jna.java.net/javadoc/overview-summary.html? Sie geben genau, was für jeden Datentyp
Nach documentation zu verwenden, sollten Sie const char*
(Java Strings sind unveränderlich)
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. –
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. –
'Leere MyFunc (char * Wert string);' lässt sich nicht kompilieren ... –
Sie am meisten wahrscheinlich brauchen 'char16_t *'. Java 'char' ist nicht das Äquivalent von C++' char'. –
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. –