gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:48:17 24 4
gpt4 key购买 nike

我正在使用适用于 Python 的 SWIG 包装抽象 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++ 库(通过 SWIG 封装的函数),C++ 代码尝试调用 OnStateChange。第一次调用它时,我看到了 print 语句的输出,第二次程序因段错误而崩溃。

我在这里阅读了 SWIG 文档 http://www.swig.org/Doc1.3/Python.html#Python_directors关于实现我正在尝试做的事情并且我启用了董事。我知道这可能不足以继续进行下去,但过去几天我一直在上下搜索,但没有找到令人满意的东西。提前致谢。

最佳答案

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

关于c++ - 在 Python 中扩展的 C++ 类中的段错误回调问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com