2

我在 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 为该结构创建一个对象,并为成员分配值并将创建的对象传递给 C++ 中的 API。

deltaUser = ffi.new("CDeltaUser*")

deltaUser.deltaUser = ffi.new("CUser*") 

deltaUser.deltaUser.id=4

现在,当我尝试通过使用 ffi.dlopen ApiName(par1,par2,deltaUser,par4)加载的 dll 将这个 deltaUser 传递给 C++ 中的 API 时,此时python 崩溃。在 Windows 和 Linux 中都会发生崩溃。

这段代码有什么问题?我正在使用 python2.7 和 cffi 1.5.2

在回溯上给出以下日志。发现值被优化了

在 ffi_call (cif=0x7ffff1189260, fn=0x7ffff0488faa , rvalue=0x7ffff118e098, avalue=0x7ffff118e078) 在 src/x86/ffi64.c:484 在 cdata_call (cd=0x7ffff118c0d0, args=0x7ffff7ee4_cffi_kend.c:=) 2637 in PyObject_Call (func=0x7ffff118c0d0, arg=, kw=) at Objects/abstract.c:2529 in do_call (f=, throwflag=) at Python/ceval.c:4239 call_function (f=, throwflag=) at Python/ ceval.c:4044

提前致谢。

4

0 回答 0