我刚开始使用GTK并希望创建跨平台应用程序。我已经完成了一些教程并在https://developer.gnome.org/gtk-tutorial/stable/c39.html#SEC-HELLOWORLD复制了示例,并使用gcc -o gtkTest gtkTest.c 'pkg-config --libs --cflags gtk+-3.0'
进行了编译,但是当我去运行它时,我得到了:
Dynamic session lookup supported but failed: launchd did not provide a socket path, verify that org.freedesktop.dbus-session.plist is loaded!
dyld: lazy symbol binding failed: Symbol not found: _cairo_xlib_surface_create
Referenced from: /usr/local/lib/libgdk-3.0.dylib
Expected in: /usr/local/lib/libcairo.2.dylib
dyld: Symbol not found: _cairo_xlib_surface_create
Referenced from: /usr/local/lib/libgdk-3.0.dylib
Expected in: /usr/local/lib/libcairo.2.dylib
我不确定这意味着什么(我的编程能力有限) - 任何想法? 谢谢, 编
答案 0 :(得分:1)
如果这不是拼写错误,你必须有反引号(`)而不是单引号(')。
执行反引号下的命令,但单引号下的命令不是。
所以你有:
gcc -o gtkTest gtkTest.c `pkg-config --cflags --libs gtk+-3.0`
如果这不是问题,请尝试重新安装GTK。
<强>更新强>
尝试重新安装Cairo,因为当您与gtk + -3.0链接时,您将与Cairo链接。 这是一个GTK + 2教程,对于GTK + 3,请关注this教程。
更新2:
您是否将GTK安装到标准路径? / usr / local / include for includes,或OSX上的任何内容?如果你没有,你必须输入bash:
gcc -o gtkTest gtkTest.c `pkg-config --cflags --libs gtk+-3.0` -L/whatever/library/path -I/whatever/include/path
使用include和library路径替换/ whatever / includeorlib / path。 -L用于设置库路径,-I用于包含路径。
BASH是案例敏感。
注意:强>
我使用Linux,所以这可能不起作用。我认为这也适用于OSX,因为Linux和OSX是类Unix系统。