C+中的Seg故障回调问题+;类在Python中扩展 我用SWIG为Python包了一个抽象C++类,并且我遇到了SEG故障问题。下面是我正在处理的代码的简化版本。(“更改”是一个枚举。)

C+中的Seg故障回调问题+;类在Python中扩展 我用SWIG为Python包了一个抽象C++类,并且我遇到了SEG故障问题。下面是我正在处理的代码的简化版本。(“更改”是一个枚举。),c++,python,multithreading,callback,virtual,C++,Python,Multithreading,Callback,Virtual,Foo.h class-Foo { 公众: 虚拟~Foo(){}; 虚拟void OnStateChange(Changes change)=0; }; 然后是Python test.py 类MyFoo(Foo): 定义初始化(自): 超级(MyFoo).\uuuuu初始化(self) def OnStateChange(自我,更改): 打印(“状态已更改为”,更改) 然后我将MyFoo的实例传递给C++ LIB(通过Sigg包函数),C++代码尝试调用OnStaseCchange。第一次调

Foo.h

class-Foo
{
公众:
虚拟~Foo(){};
虚拟void OnStateChange(Changes change)=0;
};
然后是Python

test.py

类MyFoo(Foo):
定义初始化(自):
超级(MyFoo).\uuuuu初始化(self)
def OnStateChange(自我,更改):
打印(“状态已更改为”,更改)

然后我将MyFoo的实例传递给C++ LIB(通过Sigg包函数),C++代码尝试调用OnStaseCchange。第一次调用它时,我看到print语句的输出,第二次程序因seg故障崩溃


我已经阅读了SWIG文档,这里介绍了如何实现我正在尝试做的事情,并且启用了控制器。我知道这可能不足以继续下去,但在过去的几天里,我一直在到处寻找,没有找到任何令人满意的信息。提前感谢。

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

您能发布足够的代码,以便查看此命令的人只需编译+复制/粘贴即可复制特定错误吗?(如果您可以尝试去除产生错误所不需要的所有内容,那就更好了——见鬼,您甚至可能会在过程中发现问题)。这样做会更容易找到答案。这里有一些关于如何制作的指导。谢谢你的帮助。在尝试小规模复制这个问题时,我能够解决这个问题。