如何开发跨平台GUI程序 (原创)

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

如何开发跨平台GUI程序

作者:沈仁

本文主要介绍如何使用gtk和dev-c++ 来开发跨平台GUI程序。针对大多读者没有丰富的C/C++ 经验,作者使用教程式的指导,望对读者入门C/C++的GUI开发能有所帮助。

众所周知MFC已经成为Win32的核心开发库,而VC++作为开发平台已经从16位时代至今任独领风骚。Delphi,VB等语言虽然对于开发应用程序非常方便但是应用面相对有限。而.NET, Java平台比较侧重新功能,这是以牺牲程序的性能和减少低级语言功能作为代价的。C++语言仍然在各领域中发挥重要作用。使用微软的VC++对Win32来说是一个理想的IDE。目前Linux发展飞快,在桌面领域各种开发工具层出不穷。比较常见的C/C++库就是gtk。作为刚刚步入C++编程的人员来说作为学习平台gtk是一个很好的选择。

大多Linux发行版中已经包含了gtk,甚至glade。用户所要做的仅仅是用vi来编辑一个c文件:

#include <gtk/gtk.h>

int main( int argc,

char *argv[] )

{

GtkWidget *window;

gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

gtk_widget_show (window);

gtk_main ();

return 0;

}

使用gcc编译就可以了:

gcc base.c -o base ‘pkg-config --cflags --libs gtk+-2.0’

当然Windows用户不能直接使用VC++来编译。感谢SourceForge的Glade社区他们制作了LGPL许可的Glade (一个RAD工具),并包括了gtk2.0 for win32。在Windows上运行我们还需要更多Linux上的环境。同样是SourceForge的Dev-C++就能满足我们的需要。它包括了MinGW和一个IDE。

下载完以后我们应该看到硬盘上多了2个文件:

gtk-win32-devel-x.x.x-rc1.exe

devcpp-x.x.x.x_setup.exe

这些都是LGPL的软件,意味着你可以利用这些免费软件来商业开发。现在先安装devcpp,接着再是gtk,这样gtk的安装程序就能自动识别出devcpp,并且能够自动配置devcpp。

开发环境建立好了,现在可以进行最后配置。同样是上文的c文件,我们用Dev-C++建立一个空项目,建立c文件,粘贴代码,编译。如果没有通过说明编译器参数没有选对,请加上下面的参数,可以通过Projects:Options:Parameters打开:

Compiler:

-mms-bitfields -mwindows -DHAVE_CONFIG_H -I"$(GTK_BASEPATH)/include/gtk-2.0" -I"$(GTK_BASEPATH)/lib/gtk-2.0/include" -I"$(GTK_BASEPATH)/include/atk-1.0" -I"$(GTK_BASEPATH)/include/pango-1.0" -I"$(GTK_BASEPATH)/include/glib-2.0" -I"$(GTK_BASEPATH)/lib/glib-2.0/include" -I"$(GTK_BASEPATH)/include" -DPACKAGE_PREFIX=\"\" -DPACKAGE_DATA_DIR=\"\" -DPACKAGE_LOCALE_DIR=\"\"

C++ Compiler:

-mms-bitfields -mwindows -DHAVE_CONFIG_H -I"$(GTK_BASEPATH)/include/gtk-2.0" -I"$(GTK_BASEPATH)/lib/gtk-2.0/include" -I"$(GTK_BASEPATH)/include/atk-1.0" -I"$(GTK_BASEPATH)/include/pango-1.0" -I"$(GTK_BASEPATH)/include/glib-2.0" -I"$(GTK_BASEPATH)/lib/glib-2.0/include" -I"$(GTK_BASEPATH)/include" -DPACKAGE_PREFIX=\"\" -DPACKAGE_DATA_DIR=\"\" -DPACKAGE_LOCALE_DIR=\"\"

Linker:

-L"$(GTK_BASEPATH)/lib" -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv

然后按F9编译+运行,应该出现一个200x200的对话框,是不是和Linux下的结果一致呢?好了,现在你已经学会了跨平台GUI的开发基础!

作者注:如果大家希望的话我可以开辟一个系列。像Glade,STL都可以作为一个章节。不正确的地方请大家指教。转载请说明作者和出处。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航