Я пытаюсь написать оболочку Python для библиотеки C, используя ctypes. Пока у меня есть:
C .h
typedef struct
{
int erorrCode;
char * Key;
} A;
#ifdef __cplusplus
extern "C" {
#endif
EXPORT void __stdcall DestroyA(A &input);
#ifdef __cplusplus
}
#endif
C. cpp
EXPORT void __stdcall DestroyA(A &input)
{
delete []input.Key;
}
Python .py
import sys
import ctypes
class A(ctypes.Structure):
_fields_ = [
("erorrCode", ctypes.c_int),
("Key", ctypes.c_char_p)]
try:
libapi = ctypes.cdll.LoadLibrary('./lib.so')
except OSError:
print("Unable to load RAPI library")
sys.exit()
DestroyA = libapi.DestroyA
libapi.DestroyA.argtypes = [ctypes.POINTER(A)]
libapi.DestroyA.restype = None
a = A(1,b'random_string')
DestroyA(ctypes.byref(a)) #!!!here is segmentation fault
Итак, как я могу исправить ошибку ошибки сегментации?
Примечание: я не могу изменить код на C ++, если есть способ исправить это на стороне Python.