如何在Visual Studio 2010上配置gtk

Nis*_* BC 20 gtk configuration visual-studio-2010 visual-c++

我尝试在visual studio上配置gtk +但是无法正常工作.有人可以建议我使用正确的解决方案,如何在Visual Studio 2010上安装gtk

Man*_*elH 37

我让GTK +和VS2010一起工作,所以如果你想让它工作,那就准备好玩一些,因为这需要几分钟.

首先,下载最新的Windows All-In-One软件包.我在这里使用的GTK 2.24软件包的可选直接下载链接.直接链接是32位版本.我还没有测试64位版本,因为它仍然是实验性的.

下载完捆绑包后,将其解压缩到类似C:\gtk或类似的内容中D:\gtk

接下来,我们将为GTK文件夹创建一个系统环境变量.打开命令提示符并写入:setx GTKDIR {Path to your GTK folder} /m在我的情况下将是setx GTKDIR D:\gtk /m

我们还将添加GTK +构建的应用程序所需的.dll文件,以便在Windows上运行到我们的系统PATH中.为了使事情变得简单,我建议您使用PathEditor编辑系统PATH .现在将路径添加到GDK二进制文件夹,在我的例子中是D:\ gtk\bin到系统PATH.通过在命令提示符下键入PATH,确认已将GTK bin文件夹添加到PATH .

现在我们转到Visual Studio 2010并创建一个新项目.

File
  ->New
    ->Project
    Visual C++
      ->Win32
        ->Win32 Console Application
Run Code Online (Sandbox Code Playgroud)

然后出现应用程序向导.

单击选择:

Windows Application

Empty Project
Run Code Online (Sandbox Code Playgroud)

单击"完成"继续.

在添加任何源文件之前,右键单击解决方案资源管理器中的项目名称,然后单击" 属性".现在转到配置属性,然后转到VC++目录.我们现在需要将GTK中的include和库文件添加到Include目录库目录中.

您应该在Include目录包含以下内容

$(GTKDIR)\lib\gtk-2.0\include
$(GTKDIR)\lib\glib-2.0\include
$(GTKDIR)\include
Run Code Online (Sandbox Code Playgroud)

图书馆目录:

$(GTKDIR)\lib
Run Code Online (Sandbox Code Playgroud)

虽然我们仍然在项目属性的视图中,单击链接器,然后单击系统.在右侧查找SubSystem,然后单击下拉框.选择Windows/SUBSYSTEM:WINDOWS

接下来,我们必须为编译器和链接器生成标志.幸运的是,GTK +附带了一个名为pkg-config的小工具,我们将使用它自动为我们生成这些标志.pkg-config工具可以在GTK的bin文件夹中找到.在我的例子中,这是使用我们之前定义的系统变量的D:\ gtk\bin%GTKDIR%\ bin.只需使用命令提示符导航到bin文件夹(将在那里输出创建的文本文件)并运行以下命令:

pkg-config --cflags gtk+-2.0 --msvc-syntax > compilerflags.txt
Run Code Online (Sandbox Code Playgroud)

这将创建我们需要的编译器标志并将它们存储在文本文件中.我的结果是编译器标志(我已经删除了标志-mms-bitfields,这是一个我们不需要的gcc标志):

-ID:/gtk/include/gtk-2.0 -ID:/gtk/lib/gtk-2.0/include -ID:/gtk/include/atk-1.0 -ID:/gtk/include/cairo -ID:/gtk/include/gdk-pixbuf-2.0 -ID:/gtk/include/pango-1.0 -ID:/gtk/include/glib-2.0 -ID:/gtk/lib/glib-2.0/include -ID:/gtk/include -ID:/gtk/include/freetype2 -ID:/gtk/include/libpng14
Run Code Online (Sandbox Code Playgroud)

我们将对链接器标志执行相同的操作:

pkg-config --libs gtk+-2.0 --msvc-syntax > linkerflags.txt
Run Code Online (Sandbox Code Playgroud)

链接器标志的结果:

/libpath:D:/gtk/lib gtk-win32-2.0.lib gdk-win32-2.0.lib atk-1.0.lib gio-2.0.lib pangowin32-1.0.lib gdi32.lib pangocairo-1.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib cairo.lib gobject-2.0.lib gmodule-2.0.lib gthread-2.0.lib glib-2.0.lib intl.lib
Run Code Online (Sandbox Code Playgroud)

生成所有需要的标志后,我们需要将它们添加到我们的项目中.再次右键单击项目名称,然后单击" 属性".现在转到C/C++并点击Command Line.在右侧,您应该看到一个名为" 附加选项"的空框.将compilerflags.txt内容复制并粘贴到此框中.

完成上述操作后,单击" 链接器",然后单击" 命令行".再一次,只需将linkerflags.txt文件的内容复制并粘贴到Additional Options框中即可.当我们在这里时,添加一个最后一个链接器标志/ ENTRY:mainCRTStartup这个标志告诉Visual Studio我们想要使用标准main()而不是Microsoft的_tmain()作为我们的主程序入口点.

最后,在Source Files文件夹中,使用以下命令创建并添加新的.cpp文件:

#include <gtk-2.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 VS2010");

    gtk_widget_show(window);     

    gtk_main();   
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在一切都准备好编译,链接和运行.如果一切顺利,您应该受到以下问题的欢迎:在此输入图像描述

那很有趣,对吧?:)

  • 精彩的解释!我希望stackoverflow有更多像你这样的用户:) (4认同)
  • @SteveMuster对于GTK3支持,请http://stackoverflow.com/questions/20128380/error3error-lnk1104-cannot-open-file-gtk-3-lib?lq=1 (2认同)