我正在尝试从 Python 调用 PJSUA2 库,它工作正常,但我在尝试调用时遇到了障碍
void utilAddPendingJob(PendingJob *job)
这导致以下错误
TypeError:在“Endpoint_utilAddPendingJob”方法中,“pj::PendingJob *”类型的参数 2
Python代码如下:
import pjsua2 as pj
class MyJob(pj.PendingJob):
def __init__(self, text):
self.text = text
def execute(self, is_pending = False):
print(text)
<<SNIP>>
job = MyJob("test")
pj.Endpoint.instance().utilAddPendingJob(job)
我看到的唯一区别是这个函数在 C++ 端采用指针而不是引用。但是,通过 SWIG 手册查看这应该无关紧要。
编辑:这是 PendingJob SWIG 生成的 Python 类:
class PendingJob(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, PendingJob, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, PendingJob, name)
def __init__(self, *args, **kwargs):
raise AttributeError("No constructor defined - class is abstract")
__repr__ = _swig_repr
def execute(self, is_pending):
return _pjsua2.PendingJob_execute(self, is_pending)
__swig_destroy__ = _pjsua2.delete_PendingJob
__del__ = lambda self: None
PendingJob_swigregister = _pjsua2.PendingJob_swigregister
PendingJob_swigregister(PendingJob)
以及方法签名,再次 SWIG 生成 Python 代码:
def utilAddPendingJob(self, job):
return _pjsua2.Endpoint_utilAddPendingJob(self, job)