我理解如何使用ctypes在Python中定义结构,但我似乎无法找到有关如何处理基本别名的任何文档。例如64-bit integers in SQLite:
#ifdef SQLITE_INT64_TYPE
typedef SQLITE_INT64_TYPE sqlite_int64;
typedef unsigned SQLITE_INT64_TYPE sqlite_uint64;
#elif defined(_MSC_VER) || defined(__BORLANDC__)
typedef __int64 sqlite_int64;
typedef unsigned __int64 sqlite_uint64;
#else
typedef long long int sqlite_int64;
typedef unsigned long long int sqlite_uint64;
#endif
typedef sqlite_int64 sqlite3_int64;
typedef sqlite_uint64 sqlite3_uint64;
根据构建选项,基本类型不同。在这种情况下,我想我可以假设类型是c_longlong
,但这是处理这种情况的正确方法吗?
答案 0 :(得分:3)
虽然这当然不是处理此问题的“正确”方法,但如果不使用C API代替ctypes
,这是唯一的解决方案。运行ctypes
时,typedef信息已被删除 - 它不会在编译库中显示为符号。