我正在用 SWIG for Python 包装一个抽象 C++ 类,并且遇到了段错误问题。这是我正在处理的代码的简化版本。(“更改”是一个枚举。)
Foo.h
class Foo
{
public:
virtual ~Foo() {};
virtual void OnStateChange(Changes change) = 0;
};
然后在 Python 中。
测试.py
class MyFoo(Foo):
def __init__(self):
super(MyFoo).__init__(self)
def OnStateChange(self, change):
print("the state has changed to", change)
然后,我将 MyFoo 的一个实例传递给 C++ lib(通过 SWIG 包装的函数),C++ 代码尝试调用 OnStateChange。第一次调用它时,我看到了 print 语句的输出,第二次程序因段错误而崩溃。
我已经阅读了这里的 SWIG 文档http://www.swig.org/Doc1.3/Python.html#Python_directors关于实现我正在尝试做的事情并且我启用了导向器。我知道这可能没有足够的信息继续下去,但过去几天我一直在寻找高低,但没有找到任何令人满意的东西。提前致谢。