Gtkmm无法在OSX上打开应用程序窗口

时间:2014-07-20 19:48:49

标签: c++ gtk x11 gtkmm

我已经通过自制软件安装了gtkmm3。我的项目链接和构建没有错误,但从未打开窗口。 xQuartz / X11也会在成功构建时启动。它似乎在Gtk :: Application :: create()调用期间挂起。我在下面提供了我的代码。基于Xcode 5.1。非常感谢任何帮助。

由于

#include <iostream>
#include <gtkmm-3.0/gtkmm.h>


int main(int argc, char * argv[])
{


    std::cout << "Creating Application" << std::endl;
    Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "some.thing.here");


    std::cout << "Creating Window" << std::endl;
    Gtk::Window window;

    std::cout << "Setting window title" << std::endl;
    window.set_title("Window One");


    std::cout << "Running App" << std::endl;
    return app->run(window);

}

1 个答案:

答案 0 :(得分:1)

Gtk :: Application :: create()似乎挂起,因为X11没有响应它对窗口的请求。在它的当前(默认我假设)状态只有root可以请求一个窗口。

理想的解决方案(最适合我的方法): 转到产品&gt;方案&gt;在XCode的主菜单中编辑Scheme。确保在弹出菜单中选择您当前的方案(或您的开发方案)。在打开的模式上有几个单选按钮。选择“以root身份运行”选项。现在X11应该响应窗口的请求。

另一个解决方案: 编译程序并使用sudo运行。

一个更复杂的解决方案,但如果你打算最终让某人通过ssh使用这个程序......

使用xhost添加用户并启用ssh转发,这样您就可以通过没有sudo的ssh运行已编译的版本。有很多文档解释了如何做到这一点,所以我不会在这里提供详细信息。

另一个注意事项 XCode使用const char argv生成一个main函数。 Gtk :: Application :: create()不会采用const char argv。从main的argv中删除const,一切正常。