使用ctypes映射基本typedef别名?

时间:2011-06-06 13:36:51

标签: python c typedef ctypes

我理解如何使用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,但这是处理这种情况的正确方法吗?

1 个答案:

答案 0 :(得分:3)

虽然这当然不是处理此问题的“正确”方法,但如果不使用C API代替ctypes,这是唯一的解决方案。运行ctypes时,typedef信息已被删除 - 它不会在编译库中显示为符号。