我有一个非常复杂的类,我正在尝试在 SWIG 中制作 Python 包装器。但是,当我在 Python 中创建项目的实例时,我无法在没有收到消息的情况下初始化某些数据成员:
>>> myVar = myModule.myDataType()
swig/python detected a memory leak of type 'MyDataType *', no destructor found.
有谁知道我需要做些什么来解决这个问题?有没有我可以用来生成析构函数的标志?
我有一个非常复杂的类,我正在尝试在 SWIG 中制作 Python 包装器。但是,当我在 Python 中创建项目的实例时,我无法在没有收到消息的情况下初始化某些数据成员:
>>> myVar = myModule.myDataType()
swig/python detected a memory leak of type 'MyDataType *', no destructor found.
有谁知道我需要做些什么来解决这个问题?有没有我可以用来生成析构函数的标志?
SWIG 始终生成析构函数包装器(除非%nodefaultdtor
使用指令)。但是,如果它对类型一无所知,它将生成一个不透明的指针包装器,这将导致泄漏(以及上述消息)。
请检查这myDataType
是 SWIG 已知的类型。在打开调试消息的情况下重新运行 SWIG 并检查任何类似于
Nothing is known about Foo base type - Bar. Ignored
接收到上述消息意味着 SWIG 不完全了解您的类型层次结构,因此对有限的信息进行操作——这可能导致它不生成 dtor。
错误消息对我来说很清楚,您需要为此类型定义一个析构函数。