当导入swig生成的模块时,Python会报错缺少delete方法
When importing a swig generated module, Python is complaining about missing delete method
我们有一组由swig包装的c++类。当在python中导入其中一个类时,我们会得到以下错误消息:
File ".../myobjects.py", line 176, in <module>
class RT(_object):
File ".../myobjects.py", line 187, in RT
__swig_destroy__ = _myobjects.delete_RT
AttributeError: 'module' object has no attribute 'delete_RT'
myobjects.py swig生成的RT代码如下:
class RT(_object):
__swig_setmethods__ = {}
__setattr__ = lambda self, name, value: _swig_setattr(self, RT, name, value)
__swig_getmethods__ = {}
__getattr__ = lambda self, name: _swig_getattr(self, RT, name)
__repr__ = _swig_repr
def __init__(self, *args):
this = _myobjects.new_RT(*args)
try: self.this.append(this)
except: self.this = this
def getName(self): return _myobjects.RT_getName(self)
__swig_destroy__ = _myobjects.delete_RT
__del__ = lambda self : None;
和cxx文件,其中_myobjects。所以它的创建有以下几行:
SWIGINTERN PyObject *_wrap_delete_RT(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
RT *arg1 = (RT *) 0 ;
...
简而言之,所有内容都按顺序出现,但我们仍然得到python错误。
有什么想法吗?
谢谢,
。托马
嗯,不确定为什么会发生这种情况,但是cxx文件中前面的class被两个i文件包含。删除一个包含修复了这个问题。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 为多线程环境包装 c++ new/delete 的安全/好方法
- 虚拟方法在 C++0x 中不能"delete"吗?
- 编写没有new和delete关键字的c++?最佳方法
- 当导入swig生成的模块时,Python会报错缺少delete方法
- 正确使用类中的方法' = delete '