Как выделить и отменить выделение памяти для структуры CFFI

У меня есть структура в 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

Заранее спасибо.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]