【发布时间】:2022-10-25 15:24:03
【问题描述】:
如何在 ctypes 库中为矢量数据类型编写 python 包装器?我在 ctypes 文档中找不到任何参考。下面是我需要编写 python 包装器的情况,
头文件
struct ClassItem {
int rollNumber = 0;
float score = 0;
};
struct ClassData {
std::vector<ClassItem> v_classItem;
};
//API
int show_class(ClassData *p_class_data, uint8_t max_number);
蟒蛇包装
class ClassData (Structure):
_fiels_ = [
(v_classItem , ??) #datatype declaration
]
【问题讨论】:
-
你需要v_classItem成为一个std::vector<类项>?或者它可能是一个指针?
-
@CristiFati,我更喜欢v_classItem在向量中。如果没有,那么将尝试指针。如果我得到两个实现将很有用,我可以做实际的代码实现和检查。
-
如果您需要矢量和可从以下位置访问的内部对象Python,那么也许类型不是最好的选择。你可以试试PyBind11.有一些方法可以解决这个问题,但它们只是解决方法。
-
@CristiFati,目前我所有的包装器都在 ctypes 中,如果我只为这个 API 尝试 pybind11。它可以与 ctypes 包装器一起使用吗?正如你所说的那样用指针实现它?因为我没有访问 python 中向量的任何内部对象。我只需要通过这个向量结构体作为参数表演课上面提到的 API。
标签: c++ python-3.x ctypes