Я пытаюсь передать PyCapsule из C ++ в python, используя pybind11, но, похоже, не могу понять, как это сделать. Я провел пару дней, читая документы, но не могу понять, как сделать эту работу.
Я создал класс, который я хотел бы отправить на python. Я попытался создать экземпляр py :: капсулы в C ++ в функции getDataTensor и передать его python, используя PYBIND11_MODULE. Когда попробуйте код ниже, я получаю следующее сообщение об ошибке:
TypeError: Unable to convert function return value to a Python type! The signature was
() -> DLTensor
Будем весьма благодарны за любые рекомендации по решению этой проблемы.
Мой код ниже:
class DLTensor{
public:
double* data;
int size;
DLTensor():data{new double[10]},size{10}{}
};
py::capsule getDataTensor() {
std::unique_ptr<DLTensor> dlptr =std::unique_ptr<DLTensor>(new DLTensor());
auto pybind_capsule= py::capsule(&dlptr,"DLTensorData",nullptr);
return pybind_capsule;
}
namespace py = pybind11;
PYBIND11_MODULE(DBDLTensor, m) {
m.def("getDataTesor", getDataTensor);
}