python通过ctypes调用C++ DLL过程中返回值的指定和结构体数组的使用

在做自动化测试的过程中,我需要使用python调用C++的SDK,完成接口测试的工作。由于团队只提供了C++的SDK源码,所以我需要做下面几件事:

  1. 封装C++的接口,进行接口的导出
  2. 打包为DLL,动态链接库
  3. 使用ctypes库,调用dll,完成测试

网上关于python通过ctypes调用C++动态链接库的教程非常多,我就不再写了,这里就写一下我在使用过程中遇到的两个问题:

  1. 接口返回为应字符串,C++代码中声明为char *,如何在python中获取字符串的返回值?
  2. 参数中有结构体,返回值是结构体,返回值或参数中有结构体数组的时候在python中如何传值和解析返回值?

C++接口导出

在看问题之前,我们顺便带一下C++代码如何封装。作为测试人员,我拿到的是C++的源码,要使用python调用它,首先我需要先导出我要测试的接口。为了让导出接口的代码不与SDK源代码混在一起,我们需要在项目中新建一个export.cpp专门用于导出,这样便于在git上与开发人员一起协同工作,互不干扰。
在这里插入图片描述
这个文件的内容,就是导出接口,这里直接看个例子,不做过多解释了

extern "C" __declspec(dllexport) int __stdcal

你可能感兴趣的:(测试自动化,python,ctypes,c++)