2016-08-30 2 views
0

C++ DLL 라이브러리가 있습니다. 하나의 기능은 아래와 같습니다.ctypes, python을 사용하여 C++ 함수에 문자열 매개 변수를 전달하는 방법

파이썬에서의 DLL 가져 오기가 정확합니다.

int _ParseLogin2Resp(const std::string& username, 
        const std::string& password, 
        char szErr[1024]); 

실제로 매개 변수를 전달하는 데 여러 가지 방법을 시도했습니다. C++ std::stringchar *의 차이점을 알고 있습니다. c_char_p (1. 한

)과하는 ByRef

()

username = ctypes.c_char_p("username") 
_ParseLogin2Resp(ctypes.byref(username),...) 

구석 구석의 create_string_buffer()

username = ctypes.create_string_buffer("username") 
_ParseLogin2Resp(username,...) 

그러나 기능 오류가

사용자 이름을 반환 또는 암호가 빈.

그래서 문자열 매개 변수를 함수에 전달할 수있는 해결책을 찾지 못했습니다.

내 질문은

올바른 매개 변수를 전달하여 예상대로 함수를 호출 할 수 있습니까? 아니면 제대로 작동하도록 DLL 라이브러리를 다시 작성해야합니까?

+0

char *를 허용하는 c 함수를 작성하고이 함수에서 필요한 cpp 함수를 호출하십시오. – neohope

+0

맞음! 고마워 ~ – ddming000

답변

0

파이썬 박사는 ctypes가 C 호환 데이터 유형을 제공한다고 말하면 DLL에 C 스타일 API 인터페이스를 사용하는 것이 좋습니다.

관련 문제