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=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

前もって感謝します。

4

0 に答える 0