私のgtkmmプログラムはウィンドウを表示しません。コンパイルは正常に動作します。これらは、実行しているときに私が得るメッセージです:gladeファイルのgtkmmビルダーが動作しない
(process:2312): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.24.1/gobject
/gtype.c:2706: You forgot to call g_type_init()
(process:2312): GLib-CRITICAL **: g_once_init_leave: assertion
`initialization_value != 0' failed
(process:2312): GLib-GObject-CRITICAL **: g_object_newv: assertion
`G_TYPE_IS_OBJECT (object_type)' failed
コードは次のとおりです。
int main(int argc, char** argv) {
Glib::RefPtr<Gtk::Builder> builder =
Gtk::Builder::create_from_file("basic.glade");
Gtk::Window* pMyWindow = 0;
builder->get_widget("window1", pMyWindow);
pMyWindow->show();
}
basic.gladeが有効なファイルであるか、存在しない場合、それは問題ではありません。私はbasic.gladeの代わりに全体のパスファイルを試しました。
私はそれをデバッグするとき、私はプログラムがそのビルダーの最初の行から抜け出すことはないことを認識します。それは実行し続けるようなものなので、唯一のプロセスを一時停止すると、どちらかがg_once_init_enter_impl()
またはg_slist_find()
(前者によって呼び出されます)になります。 (それは決してそのpMyWindow->show()
ラインに到達していないので) だから私は今まで
簡単な質問ですが、メインのウィンドウをすべて破棄(メモリを解放)する必要がありますか? – Matthew