私は以下のように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=0x7ffff118c0dcf0、args=0x7ffffff7ee43) で cwd.cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_cend_ Objects/abstract.c:2529 の PyObject_Call (func=0x7ffff118c0d0, arg=, kw=) の 2637 Python/ceval.c の do_call (f=, throwflag=) の 2529 Python/ceval.c:4239 の call_function (f=, throwflag=) ceval.c:4044
前もって感謝します。