簡體   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