Python 与 C++

一直以来,我认为Python 调用 C++ 的接口是一件非常容易的事情。

但是当真的做了却发现并不是那么容易。

在这个任务中,我需要使用 Python 调用海康官方 SDK。

而痛苦之处在于大部分的开发时间,

我都在使用 ctypes 来定义 C 函数需要的结构体。

所以我的一大部分工作成果是这样的:

这个工程主要用 Python 实现海康门禁设备的远程配置和布防。

假如你也正好再做这个工作,同时需要一些参考,

可以发送邮件到我的邮箱 qiurenbo@outlook.com,拿到源码。

陷阱

除了提到的结构体的定义,

还有一部分的困难来自于使用 ctypes 时容易误入的一些陷阱。

比如,你需要:

区分 cdecl 与 stdcall 调用约定在 ctypes 中的指定方式。

ctypes.byref 而不是 ctypes.addressof 去做取地址 & 的操作

对于 char* 要用 ctypes.POINTER(ctypes.c_char) ,

而不是 c_char_p,除非你确定 char* 指向的是一个字符串

参考链接

ctypes — A foreign function library for Python——从这个文档快速入门


发表评论

电子邮件地址不会被公开。 必填项已用*标注