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——从这个文档快速入门


《Python 与 C++》上有2条评论

  1. 老师您好,我也在看海康门禁这方面东西,被各种结构体搞晕了,被能不能借源码参考一下

发表评论

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