Сама функция, к которой нужна обертка выглядит так
std::string extractFromGpkgEnvelope( const std::string &envelope )
{
int headerSize = parseHeaderSize( envelope );
std::string body( envelope.size() - headerSize, 0 );
memcpy( &body[0], &envelope[headerSize], envelope.size() - headerSize );
return body;
}
С-интерфейс реализовал так
const char *MYLIB_extractFromEnvelope( const char *envelope )
{
return extractFromGpkgEnvelope( std::string(envelope) ).c_str();
}
А вызываю из Python так
def from_envelope(envelope): func = lib.MYLIB_extractFromEnvelope func.restype = ctypes.c_char_p body = func(ctypes.c_char_p(envelope)) return body.decode('utf-8')
К сожалению, такая реализация не работает. Ранее никогда таким не занимался, да и знания С/С++ у меня особого нет. Помогите, пожалуйста.
Я знаю, что эту же функцию можно реализовать на чистом Python, но нужна именно возможность вызова библиотечной функции.