繁体   English   中英

Python中扩展的C ++类中的段错误回调问题

[英]Seg Fault Callback Issues in a C++ Class Extended in Python

我正在使用SWIG for Python包装一个抽象的C ++类,并且遇到了seg故障问题。 这是我正在处理的代码的简化版本。 (“更改”是枚举。)

foo.h中

class Foo
{
public:
    virtual ~Foo() {};

    virtual void OnStateChange(Changes change) = 0;
};

然后在Python中。

test.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语句的输出,第二次程序因seg故障而崩溃。

我已经在http://www.swig.org/Doc1.3/Python.html#Python_directors上阅读了SWIG文档,了解我正在尝试做什么,并且我启用了导演。 我知道这可能不是足够的信息,但过去几天我一直在寻找高低,并没有找到任何令人满意的信息。 提前致谢。

在尝试创建一个小例子后,我发现了这个问题。 我忘记了C ++代码正在运行它自己的线程,并试图调用Python线程。 为解决问题必须做的就是在swig命令中添加-threads选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM