2016-08-30 3 views
0

У меня есть библиотека 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, чтобы функция работала правильно?

+0

Напишите функцию c, которая принимает char *, и в этой функции вызывается функция cpp, в которой вы нуждались. – neohope

+0

Правильно! Благодаря ~ – ddming000

ответ

0

Python doc говорит, что ctypes предоставляет совместимые типы данных C, лучше использовать интерфейс API стиля c в вашей DLL.

Смежные вопросы