将.lib文件中定义的c类型导入python
我有一个第三方C静态库(.lib),我想使用python利用它,提供的头包含一些数据结构的函数和声明的原型,但它也使用头中未定义的一些数据类型 “header.h”中的示例 句柄数据类型在标头中不可访问,有些函数将此数据类型用作参数或返回值 如何从Python函数导出要使用的数据类型“句柄” 有没有直接处理“R_HANDLE”的方法 rem:对于经典结构和c数据类型,我使用Python CookBook的方法,使用ctypes将.lib文件中定义的c类型导入python,python,c,ctypes,cpython,.lib,Python,C,Ctypes,Cpython,.lib,我有一个第三方C静态库(.lib),我想使用python利用它,提供的头包含一些数据结构的函数和声明的原型,但它也使用头中未定义的一些数据类型 “header.h”中的示例 句柄数据类型在标头中不可访问,有些函数将此数据类型用作参数或返回值 如何从Python函数导出要使用的数据类型“句柄” 有没有直接处理“R_HANDLE”的方法 rem:对于经典结构和c数据类型,我使用Python CookBook的方法,使用ctypes 谢谢ctypes只能利用动态库(.dll,.dylib,.so等)。
谢谢
ctypes
只能利用动态库(.dll
,.dylib
,.so
等)。对于其他数据类型,ctypesgen
是一个很好的方法。ctypes.wintypes
包括句柄
。但是,如果它是一个静态库,那么它必须与DLL或EXE静态链接,因此您必须编写一个使用该库的DLL,然后从Python调用它。在Python中使用句柄时,您打算如何处理它?下面是一个函数的示例,该函数将句柄*作为参数RESULT OpenW(int set,int32_t wxtimeout,HANDLE*HANDLE)
,@BrianCain我发现有一个可用的dllIf,如果它使用的是Windows句柄
,则头必须包含Windows.h,或者winbase.h或winnt.h。typedef
来自一些包含的源文件。如前所述,ctypes.wintypes
模块具有Windows类型别名和一些常见结构。它还远未完成,但它确实有常见的句柄类型,它们都只是空指针。
typedef HANDLE R_HANDLE;