呈现窗口时出现 Gtkmm 分段错误
Posted
技术标签:
【中文标题】呈现窗口时出现 Gtkmm 分段错误【英文标题】:Gtkmm Segmentation Fault when presenting window 【发布时间】:2018-01-19 20:22:39 【问题描述】:我正在学习 gtkmm 库,我直接撞到了一堵砖墙。
我使用的是 3.22.2 版本。
当我在主窗口上调用 present 时,我编写的这个简单程序出现了 seg 错误,我不知道为什么。
我在下面代码中的段错误行中添加了注释。
#include <gtkmm.h>
using namespace Gtk;
using namespace std;
class App : public Application
protected:
App() : Application()
void onWindowHide( Window *window ) delete window;
void on_activate() override
ApplicationWindow *mainWindow = createMainWindow();
mainWindow->present(); // it gets a SEG_FAULT here
ApplicationWindow *createMainWindow()
Gtk::ApplicationWindow *mainWindow;
mainWindow = new ApplicationWindow();
add_window( *mainWindow );
mainWindow->signal_hide()
.connect( sigc::bind<Gtk::ApplicationWindow *>(
sigc::mem_fun( *this, &App::onWindowHide ), mainWindow ));
public:
static Glib::RefPtr<App> create()
return Glib::RefPtr<App>( new App());
;
int main( int argc, char *argv[] )
auto app = App::create();
return app->run();
【问题讨论】:
【参考方案1】:createMainWindow 方法没有返回值。 on_active 方法中的指针 mainWindow 可能设置为 nullptr。
ApplicationWindow *createMainWindow()
Gtk::ApplicationWindow *mainWindow;
mainWindow = new ApplicationWindow();
add_window( *mainWindow );
mainWindow->signal_hide()
.connect( sigc::bind<Gtk::ApplicationWindow *>(
sigc::mem_fun( *this, &App::onWindowHide ), mainWindow ));
return mainWindow;
【讨论】:
谢谢!那是一个相当愚蠢的错误。我很惊讶我的 IDE 没有捕捉到它。以上是关于呈现窗口时出现 Gtkmm 分段错误的主要内容,如果未能解决你的问题,请参考以下文章