Visual Studio 2013 年的 GTK+ 3.0 安装
GTK+ 3.0 setup in Visual Studio 2013
所以我在 Visual Studio 2013 年尝试使用 GTK+ 3.0,我遵循了这个教程:How to configure gtk on Visual studio 2010。问题是每当我尝试构建解决方案时,我都会收到链接器错误。我正在使用此代码:
#include <gtk-3.0\gtk\gtk.h>
int main(int argc, char* argv[])
{
gtk_init(&argc, &argv);
GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//gtk_widget_set_usize(window, 300, 200);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_title(GTK_WINDOW(window), "GTK+ with VS2013");
gtk_widget_show(window);
gtk_main();
return 0;
}
每个方法调用都会产生这种类型的错误:
Error 1 error LNK2019: unresolved external symbol _gtk_init_abi_check referenced in function _main
我尝试过的事情:
在链接器的附加依赖项区域添加 'include' 文件夹,以及项目设置下的 VC++ 目录区域
检查链接器中是否包含 lib 文件夹中的每个 .lib
这是我的列表:
atk-1.0.lib cairo.lib fontconfig.lib gailutil.lib gdk-win32-3.0.lib gdk_pixbuf-2.0.lib gio-2.0.lib glib-2.0.lib gmodule-2.0.lib gobject-2.0.lib gthread-2.0.lib gtk-win32-3.0.lib pango-1.0.lib pangocairo-1.0.lib pangoft2-1.0.lib pangowin32-1.0.lib
检查编译器标志以确保它们正确
这是我正在使用的编译器标志列表:
-IC:/gtk/include/gtk-3.0
-IC:/gtk/lib/gtk-3.0/3.0.0
-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
-IC:/gtk/include/fontconfig
-IC:/gtk/include/gail-3.0
-IC:/gtk/include/gio-win32-2.0
-IC:/gtk/include/jasper
-IC:/gtk/include/librsvg-2.0
-IC:/gtk/include/libxml2
-IC:/gtk/include/lzma
-IC:/gtk/include/pixman-1
-IC:/gtk/lib/libffi-3.0.12/include
似乎库没有被正确引用,但我不知道还能尝试什么。欢迎提出任何建议!
所有感兴趣的人;我想到了!这是一种草率的处理方式,但我所要做的就是将 .dll 文件复制到 VS2013 项目的 Debug 文件夹中。其他一切都按预期工作!
我遵循了相同的步骤并且对我有用。我使用的包含和库似乎不包含任何其他文件。
在您的构建中,GTK dll 的路径似乎不清楚。也许您忘记将 GTK dll 目录 (GTK\bin) 添加到您的系统路径?
您还必须确保您的构建配置与 dll 匹配,因此 win32 用于构建为 32 位的 dll,x64 用于构建为 64 位的 dll。
所以我在 Visual Studio 2013 年尝试使用 GTK+ 3.0,我遵循了这个教程:How to configure gtk on Visual studio 2010。问题是每当我尝试构建解决方案时,我都会收到链接器错误。我正在使用此代码:
#include <gtk-3.0\gtk\gtk.h>
int main(int argc, char* argv[])
{
gtk_init(&argc, &argv);
GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//gtk_widget_set_usize(window, 300, 200);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_title(GTK_WINDOW(window), "GTK+ with VS2013");
gtk_widget_show(window);
gtk_main();
return 0;
}
每个方法调用都会产生这种类型的错误:
Error 1 error LNK2019: unresolved external symbol _gtk_init_abi_check referenced in function _main
我尝试过的事情:
在链接器的附加依赖项区域添加 'include' 文件夹,以及项目设置下的 VC++ 目录区域
检查链接器中是否包含 lib 文件夹中的每个 .lib
这是我的列表:
atk-1.0.lib cairo.lib fontconfig.lib gailutil.lib gdk-win32-3.0.lib gdk_pixbuf-2.0.lib gio-2.0.lib glib-2.0.lib gmodule-2.0.lib gobject-2.0.lib gthread-2.0.lib gtk-win32-3.0.lib pango-1.0.lib pangocairo-1.0.lib pangoft2-1.0.lib pangowin32-1.0.lib
检查编译器标志以确保它们正确
这是我正在使用的编译器标志列表:
-IC:/gtk/include/gtk-3.0
-IC:/gtk/lib/gtk-3.0/3.0.0
-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
-IC:/gtk/include/fontconfig
-IC:/gtk/include/gail-3.0
-IC:/gtk/include/gio-win32-2.0
-IC:/gtk/include/jasper
-IC:/gtk/include/librsvg-2.0
-IC:/gtk/include/libxml2
-IC:/gtk/include/lzma
-IC:/gtk/include/pixman-1
-IC:/gtk/lib/libffi-3.0.12/include
似乎库没有被正确引用,但我不知道还能尝试什么。欢迎提出任何建议!
所有感兴趣的人;我想到了!这是一种草率的处理方式,但我所要做的就是将 .dll 文件复制到 VS2013 项目的 Debug 文件夹中。其他一切都按预期工作!
我遵循了相同的步骤并且对我有用。我使用的包含和库似乎不包含任何其他文件。
在您的构建中,GTK dll 的路径似乎不清楚。也许您忘记将 GTK dll 目录 (GTK\bin) 添加到您的系统路径?
您还必须确保您的构建配置与 dll 匹配,因此 win32 用于构建为 32 位的 dll,x64 用于构建为 64 位的 dll。