我在 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
提前致谢。