Ich habe eine C++ - DLL-Bibliothek. Eine Funktion wird wie folgt angezeigt.Wie übergeben Zeichenfolge Parameter an C++ - Funktion mit Ctypes, Python
Der DLL-Import in Python ist korrekt.
int _ParseLogin2Resp(const std::string& username,
const std::string& password,
char szErr[1024]);
In der Tat habe ich viele Möglichkeiten versucht, Parameter zu übergeben. Ich kenne den Unterschied zwischen C++ std::string
und char *
.
1.Use das c_char_p() und byref()
username = ctypes.c_char_p("username")
_ParseLogin2Resp(ctypes.byref(username),...)
2.Use create_string_buffer()
username = ctypes.create_string_buffer("username")
_ParseLogin2Resp(username,...)
Aber Funktion ERROR zurück
Der Benutzername oder das Passwort ist leer.
So konnte ich keine Lösung finden, um String-Parameter an meine Funktion zu übergeben.
Meine Frage ist.
Ist es möglich, dass ich korrekte Parameter übergeben konnte, um meine Funktion wie erwartet aufzurufen, oder muss ich meine DLL-Bibliothek neu schreiben, damit die Funktion korrekt funktioniert?
Schreiben Sie eine c-Funktion, die char * akzeptiert, und rufen Sie in dieser Funktion die benötigte cpp-Funktion auf. – neohope
Richtig! Danke ~ – ddming000