Python调用C、C++库
sf2gis@163.com
2014年9月24日
1 目标:Python调用C/C++中的类或方法
ctypes是Python扩展库,自2.5以后开始加入Python。
Ctypes提供了C/C++与Python之间交互的映射关系,将库映射为一个对象。
用于调用C/C++库。
2 原理
python使用c api dlopen库打开dll。
3 方法:ctypes,sip,pycxx
ctypes在python内部调用c/C++库,因为是C接口,需要将C++的类转换为C的函数。
sip:将库全部转换为python库。为pyqt开发,较少使用。
pycXX:将库全部转换为python库。专为CXX开发。
3.1 导入库
CTypes可以加载库,并将库按照不同的类型导出为对象。共有cdll(cdecl),windll(stdcall),oledll(stdcall,返回HResult错误码)三种类型。
参见:ctypes库.docx
..\CPP\函数调用约定-_stdcall_cdecl_fastcall_externC.docx
3.2 类型映射
None == C中的NULL