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