У меня есть структура в C ++, как показано ниже
typedef struct user
{
unsigned long id;
char *name;
struct1 type;
int Period;
char *altername;
char *description;
struct2 state;
struct3 *userDetails;
} CUser;
typedef struct _CDeltaUser
{
CUser *deltaUser;
struct3 *deletedUserDetails;
struct3 *changedUserValues;
} CDeltaUser;
Я пытаюсь создать объект для этой структуры через CFFI и назначить значения для членов и передать созданный объект в API в C ++.
deltaUser = ffi.new("CDeltaUser*")
deltaUser.deltaUser = ffi.new("CUser*")
deltaUser.deltaUser.id=4
Теперь, когда я пытаюсь передать этот deltaUser API в C ++ через DLL, загруженную с помощью ffi.dlopen ApiName (PAR1, par2, deltaUser, Par4) Python падает в этот момент. сбой происходит как в Windows, так и в Linux.
Что не так с этим кодом? Я использую python2.7 и cffi 1.5.2
на traceback выдает следующий лог. Найдено, что значение оптимизировано
в ffi_call (cif = 0x7ffff1189260, fn = 0x7ffff0488faa, rvalue = 0x7ffff118e098, avalue = 0x7ffff118e078) в src / x86 / ffi64.c: 484 в cdata_cfff0: 0c0: 0c0: 0: 0c0: 0 2637 в PyObject_Call (func = 0x7ffff118c0d0, arg =, kw =) в Objects / abstract.c: 2529 в do_call (f =, throwflag =) в Python / ceval.c: 4239 функция вызова (f =, throwflag =) в Python / ceval.c: 4044
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …