【发布时间】:2022-08-16 16:50:45
【问题描述】:
我正在为 C++ 函数编写 Python 绑定代码:
void cls::acceptCall(My::namespace::Reply reply)
{
std::cout <<__FUNCTION__ << std::endl;
reply(My::namespace::Result::Ok, nullptr);
}
using Reply = std::function<void(Result result, std::exception_ptr error)>;
enum class Result {Ok,NOT_OK }
绑定代码:
py::class_<APIExtProvider>(m, \"APIExtProvider\")
.def(\"acceptCall\", &APIExtProvider::acceptCall, py::call_guard<py::gil_scoped_release>())
python_调用:
result = pyunifiedphone.Result.OK
exception = pyunifiedphone.Exception()
def reply_method(result, exception):
return None
provider.acceptCall(reply_method)
但是,我收到此错误:
TypeError:acceptCall():不兼容的函数参数。支持以下参数类型: 1. (self: pyunifiedphone.APIExtProvider, arg1: Callable[[pyunifiedphone.Result, pyunifiedphone.Exception], None]) -> 无
调用:<pyunifiedphone.APIExtProvider object at 0x7f2b6aa149b0>, , <function reply_method at 0x7f2b6abfa1f0>
正确的绑定方法是什么?
标签: python c++ python-3.x c++14 pybind11