VS2010下配置GTK+2.0

来源:互联网 发布:绝地求生优化太垃圾了 编辑:程序博客网 时间:2024/04/28 10:47


利用GTK+开发的程序可以在多平台下运行,但在Windows下需要进行配置。

首先在官网http://www.gtk.org 中下载Windows 版本的all-in-onebundle.解压到D:\GTK 。将D:\GTK\bin添加入到PATH环境变量。将本文件夹下的gtkrc放入etc/gtk-2.0文件夹下,以使用MS-Windows主题。运行cmd,输入运行"pkg-config --cflags --libs gtk+-2.0",出现下图的输出表明之前的配置正确。

输入"gtk-demo"可以看一些例子。

输入"pkg-config --cflags --libs gtk+-2.0 >d:\a.txt", 会将上图中的输出写入到Da.txt文件中。在我的电脑中得到以下内容。
-mms-bitfields -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  -LD:/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 

其中以-I开头的是工程编译要包含的路径,以-L开头的是链接库名称。

 

打开VS2010,创建一个C++工程。点击菜单栏View下的Property Manager,出现下面的选项卡:

双击击上面的Microsoft.Cpp.Win32.user,出现以下窗口:

点击VC++ Directories,进行配置路径,点击Include Directories下的Edit添加头文件的路径。将上面得到的txt文档中以I开头的路径都添加进去,如下图所示:

点击OK

同理添加库文件路径:库文件为txt文件中以-L开头的路径,我在这里只有D:/GTK/lib一项,如图所示:

点击ok,再添加依赖库文件。添加方法如下:

进行编辑,添加以下内容:

glib-2.0.lib

gtk-win32-2.0.lib 

gdk-win32-2.0.lib 

gobject-2.0.lib 

gdk_pixbuf-2.0.lib 

gthread-2.0.lib 

gmodule-2.0.lib 

pango-1.0.lib intl.lib

注意,一条一条分别加入,一条一行(一个回车),(注意行末不要加";")否则会出现类似以下错误:1>LINK : fatal error LNK1104: 无法打开文件“…….lib”

添加之后如下:

点击OK。再点击应用,确定。

建立一个控制台应用程序,输入下面代码:

#include<gtk/gtk.h>

 

//回调函数 

void hello(GtkWidget *widget

           ,gpointer data)

{

    g_print("HelloWorld!\n");  

}

gint delete_event(GtkWidget *widget

                  ,GdkEvent *event

                  ,gpointer data)

{

    g_print("deleteevent occurred\n");

    returnTRUE;  

}

 

void destroy(GtkWidget *widget,

           gpointerdata)

{

    gtk_main_quit();

}

 

int main(int argc, char **argv)

{

    //GtkWidget是构件的存储类型 

    GtkWidget*window;

    GtkWidget*button;

    gtk_init(&argc,&argv);

    

    //创建新窗口 

    window= gtk_window_new(GTK_WINDOW_TOPLEVEL);

    

    //当收到delete_event信号时,调用前面的delete_event函数 

    g_signal_connect(G_OBJECT(window),"delete_event",

                  G_CALLBACK(delete_event),NULL);

    

    //destroy事件的回调函数destroy 

    g_signal_connect(G_OBJECT(window),"destroy",

                  G_CALLBACK(destroy),NULL);

    

    //改变窗口边框的宽度 

    gtk_container_border_width(GTK_CONTAINER(window),10);

    

    //创建一个标签为"Hello World"的新按键 

    button=  gtk_button_new_with_label("HelloWorld");

    

    

    //当收到"clicked"信号时会调用hello函数 

    g_signal_connect(G_OBJECT(button),"clicked",

                  G_CALLBACK(hello),NULL);

    

    g_signal_connect_swapped(G_OBJECT(button),"clicked",

                         G_CALLBACK(gtk_widget_destroy),

                         window);

                         

    gtk_container_add(GTK_CONTAINER(window),button);

    

    gtk_widget_show(button);

    gtk_widget_show(window);

    

    gtk_main();

    

    return0;

}

编译,运行,如果能够成功运行,则配置成功.

Enjoyit~~~

0 0