우선 나는 ctypes를 처음 사용하고 제 질문에 대한 대답을 검색했습니다. 확실히 여기에서 어떤 통찰력을 주셔서 감사합니다.char * 객체를 생성하여 C++/c 공유 객체 라이브러리에 전송
다른 도구에서 제공 한 바이트 문자열이 있습니다. 여기에는 16 진수 및 기타 값이 표시됩니다. 다음과 같이
mybytestring = b'something with a lot of hex \x00\x00\xc7\x87\x9bb and other alphanumeric and non-word characters' # Length of this is very long let's say 480
mycharp = c_char_p(mybytestring)
나는 또한 c_char_Array를 만들 :
mybuff = create_string_buffer(mybytestring)
문제는 내가 C로 ++ 라이브러리를 mycharp 또는 mybuff 중 하나를 전송하는 .so 기능입니다, 다음과 같이 나는 c_char_p 개체를 만드는거야 문자열은 NULL 종결
나는 C++ 라이브러리를로드하고있어 ('\의 x00에서'의 첫 번째 항목)에 차단하고 함수를 호출하면 다음과 같이됩니다 :
lib_handle = cdll.LoadLibrary(mylib.so)
lib_handle.myfunction(mycharp)
lib_handle.myfunction(mybuff)
C++ 함수는 char *
NULL 터미네이터 ('\ x00')가 포함 된 전체 문자열을 보낼 수있는 방법을 알고 있습니까?
감사
버퍼가 끝나는 위치를 C++ 코드가 어떻게 알 수 있습니까? –
감사합니다. 그는 데이터를 올바르게 처리하기 위해 자신의 편을 변화시켜야했습니다. –