【发布时间】:2019-06-27 04:41:23
【问题描述】:
我想用 GTK+3 编译代码。不使用 MSYS2 或 Visual Studio。 我收到“未定义的引用”
首先,尝试使用官方页面上的本教程:https://www.gtk.org/download/windows.php,但使用 MSYS2 时一团糟;另外,我不想要类似 linux 的环境,也不想要类似 unix 的环境(更不用说 Visual Studio)。
我下载了版本 2 的“all in one bundle”,设置了环境变量和所有这些东西。一切正常,代码编译! (来自版本 2 的代码)。然后我尝试更改为版本 3,从:http://www.tarnyko.net/dl/gtk.htm
当然,环境变量已更新,编译行中的库版本也已更新。该程序是针对第3版的,特别是官方网站中的第一个:https://developer.gnome.org/gtk3/stable/gtk-getting-started.html。没用。
然后,按照本教程进行操作:http://www.tarnyko.net/repo/gtk3_build_system/tutorial/gtk3_tutorial.htm
我用命令的结果重写了编译行:pkg-config --cflags --libs gtk+-3.0(如上面的教程所说)
版本 2(正常工作)的编译行是:
gcc -Wall -g test.c -o test -mms-bitfields -Ic:/gtk/include/gtk-2.0 -Ic:/gtk/lib/gtk-2.0/include -Ic:/gtk/include/atk-1.0 -Ic:/gtk/include/cairo -Ic:/gtk/include/gdk-pixbuf-2.0 -Ic:/gtk/include/pango-1.0 -Ic:/gtk/include/glib-2.0 -Ic:/gtk/lib/glib-2.0/include -Ic:/gtk/include -Ic:/gtk/include/freetype2 -Ic:/gtk/include/libpng14 -Lc:/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl
版本 3(我要问的那个)的编译行是:
gcc -Wall -g iniciando.c -o iniciando -mms-bitfields -IC:/gtk3/include/gtk-3.0 -IC:/gtk3/include/cairo -IC:/gtk3/include/pango-1.0 -IC:/gtk3/include/atk-1.0 -IC:/gtk3/include/cairo -IC:/gtk3/include/pixman-1 -IC:/gtk3/include -IC:/gtk3/include/freetype2 -IC:/gtk3/include -IC:/gtk3/include/libpng15 -IC:/gtk3/include/gdk-pixbuf-2.0 -IC:/gtk3/include/libpng15 -IC:/gtk3/include/glib-2.0 -IC:/gtk3/lib/glib-2.0/include -LC:/gtk3/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lpangocairo-1.0 -lpangoft2-1.0 -lfreetype -lfontconfig -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lm -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
最后一个库(intl)一开始就出现了问题,因为它不存在于它应该存在的地方,并且没有编译;我删除了它并得到了我要求的错误,然后从我的 GTK 2 中复制了 intl(只是为了看看发生了什么),错误是一样的。
我希望程序被编译;但我得到了:undefined reference to: 'gtk_main_quit'(以及所有 GTK 函数)。
【问题讨论】: