У меня есть библиотека C++ DLL. Одна функция показана ниже.Как передать строковые параметры функции C++ с использованием ctypes, python
Импорт DLL в Python верен.
int _ParseLogin2Resp(const std::string& username,
const std::string& password,
char szErr[1024]);
Фактически, я пробовал много способов передать параметры. Я знаю разницу между C++ std::string
и char *
.
1.Используйте c_char_p() и ByRef()
username = ctypes.c_char_p("username")
_ParseLogin2Resp(ctypes.byref(username),...)
2.Use create_string_buffer()
username = ctypes.create_string_buffer("username")
_ParseLogin2Resp(username,...)
Но функция ERROR возвращает
имя пользователя или пароль пустой.
Поэтому я не смог найти решение для передачи параметров строки моей функции.
Мой вопрос.
Возможно ли, что я смог передать правильные параметры для вызова моей функции, как ожидалось, или мне нужно переписать библиотеку библиотеки DLL, чтобы функция работала правильно?
Напишите функцию c, которая принимает char *, и в этой функции вызывается функция cpp, в которой вы нуждались. – neohope
Правильно! Благодаря ~ – ddming000