如何使用没有主参数的gtkmm(argc / argv)?

时间:2014-03-16 10:03:39

标签: gtkmm

我正在尝试运行gtkmm3应用程序,但它不起作用! 我的代码:     #包括     #include

int main(void)
{
  Glib::RefPtr<Gtk::Application> app = Gtk::Application::create("org.gtkmm.examples.base");

  Gtk::Window window;
  window.set_default_size(200, 200);

  return (app->run(window));
}

错误:

  

gtkmm的:错误:application.cc:157:INT   Gtk :: Application :: run(Gtk :: Window&amp;):断言失败:(m_argc)1
  20729 abort(core dumped)./a.out

gdb告诉我“app-&gt; run(window)”失败了。

doc表示有两个构造函数,一个是argc / argv,另一个是没有。

如果我使用第一个构造函数,它可以工作,但由于gtk,我无法向我的程序发送参数。

要编译,我使用:

g++ test.cpp `pkg-config gtkmm-3.0 --cflags --libs`

有什么问题?

1 个答案:

答案 0 :(得分:3)

我也有这个问题。我最终使用了下面示例中显示的解决方法。也许其他人可以更好地解决这个问题。

#include <gtkmm.h>

int main(int argc, char *argv[])
{
  argc = 1;
  Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");

  Gtk::Window window;
  window.set_default_size(200, 200);

  return (app->run(window));
}

我是谎言&#39;到Gtk :: Application :: create()告诉它命令行中没有参数。这样您就可以自己处理(或忽略)命令行参数。如果你没有将argc设置为1并且有参数,则应用程序将中止消息&#34;此应用程序无法打开文件&#34;。我希望这会有所帮助。