在 Python 中扩展的 C++ 类中的 Seg 错误回调问题
Seg Fault Callback Issues in a C++ Class Extended in Python
我正在用 Python 的 SWIG 包装一个抽象的C++类,并且遇到了 seg 错误问题。 这是我正在处理的代码的简化版本。 ("更改"是一个枚举。
福.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++库(通过SWIG包装的函数),C++代码尝试调用OnStateChange。 第一次调用它时,我看到 print 语句的输出,第二次程序因 seg 错误而崩溃。
我已经阅读了这里的SWIG文档 http://www.swig.org/Doc1.3/Python.html#Python_directors 关于实现我正在尝试做的事情,并且我启用了控制器。 我知道这可能还不足以继续下去,但过去几天我一直在上下搜索,没有找到任何令人满意的东西。 提前谢谢。
在尝试创建一个小示例后,我发现了这个问题。 我忘记了C++代码正在运行它自己的线程,并试图调用 Python 线程。 要解决此问题,所有需要做的就是将 -threads 选项添加到 swig 命令中。
相关文章:
- 警告处理为错误这里有什么问题
- Project Euler问题4的错误解决方案
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 类C++中的函数问题(LNK2019和LNK1120错误)
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- posix_spawn():使用posix_scawn()时的错误处理问题
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 动态类的分段错误(家庭作业问题)
- C 模板错误问题
- isdigit 的分段错误问题
- 用于防止重复和语法错误问题的布尔数组
- 遇到错误问题:在'{'之前,预期的非限定 id 只是一个我需要的类的标头,只是不确定导致错误的原因
- 对象内部结构:解决分割错误问题
- 与我定义的类的成员有关的c++向量数据类型编译器错误问题
- 警告错误问题
- 使用 C++ 的代码块中的链接器错误问题
- 链接器错误问题
- 分段错误问题 # n
- 如何解决支持库中发生的分段错误问题