64位win7下,CodeBlock13.12配置GTK3.x环境以及第一个DEMO的执行

      MAIL:crachman#qq.com

  OS版本:windows 7 Ultimate 64Bit  English Version

  CB版本:CodeBlock13.12为当前最新版本自带MinGW编译器,如图1所示

GTK版本:GTK+ 3.6.4下载32位版本(官网提示:64位版本兼容性不保证)如图2所示

一、下载安装

 

                         图1. CodeBlocks13.12官网下载示意图     


                        图2.GTK+ 3.6.4官网下载示意图

本文CodeBlock安装路径:C:\Program Files (x86)\CodeBlocks ,按提示安装即可。

GTK的安装参照压缩包中gtk+-bundle_3.6.4-20130921_win32.README.txt的说明即可!

其中GTK安装包的解压路径:D:\gtk3   (路径可以任选,我一般选择“绝对路径”中不含中文)


二、设置环境变量

右击“计算机(Computer)” → “属性(Properties)” ,

在弹出窗口的侧边栏选择“高级系统设置(Advanced system settings)”→ 在弹出的窗口选择"高级(Advanced)"标签页"

→点击“环境变量(Environment Variables)”,在“用户变量”或者“系统变量”(任一均可,我选用户变量),

将 C:\Program Files (x86)\CodeBlocks\MinGW\bin 和 D:\gtk3\bin 添加到PATH中,注意路径间要英文输入法下分号隔开;

路径添加后,在重新打开的命令行中敲入:gcc -v会看到编译器的版本情况,说明MinGW的bin路径添加成功。

然后按照gtk+-bundle_3.6.4-20130921_win32.README.txt中提示,在命令行下敲入以下命令

pkg-config --cflags gtk+-3.0

pango-querymodules > c:\gtk\etc\pango\pango.modules

gdk-pixbuf-query-loaders > c:\gtk\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache

gtk-query-immodules-3.0 > c:\gtk\lib\gtk-3.0\3.0.0\immodules.cache

最后敲入 gtk3-demo                   会看到会执行在D:\gtk3\bin\目录下自带的gtk3-demo.exe程序。

该程序提供了gtk几乎所有构件的使用样例程序和源代码。

如果成功地配置到目前,说明CodeBlocks和GTK+ 3.x已经正确安装。


三、在CodeBlocks中创建一个GTK3的工程(这里就不介绍如何创建GTK2的工程)

        如果直接创建一个GTK工程GTK2项目,一路设置到选择GTK's Location的路径,

出现找不到gtk.h的错误时,(如图找不到gtk.h)说明你安装的GTK+ 3.x的,不能创建GTK2的项目。

           由于CodeBlocks目前只支持GTK2,所以要创建GTK3的程序,只能通过建立“空项目”后,手动设置。

 

以下是GTK3工程手动配置的内容:

     点击"Project"→"build options"
        1:选择“Compiler settings”标签中的Other options子标签
         加入编译选项

        -mms-bitfields     选项解释:编译GTK程序必须的选项

      2:选择“Linker settings”标签
       在"Link libraries"中点击"Add"按钮,在弹出的文件选择对话框中找到d:\gtk3\lib\目录下的文件 全选,一次性加入所有的lib文件,无需一个一个的加入。
       在Other Linker options

       加入链接选项
       -mwindows          选项解释:告诉编译器去编译一个窗口程序,生成的程序可以去掉控制台。
    
      3:选择“Search directories”标签
        在"Compiler"子标签中点Add,添加gtk+3.x中所有的头文件,一般在名为include的文件夹下

        即,要加入所有包含include文件夹和子文件夹路径,而且只能一条一条加。

      D:\gtk3\include
      D:\gtk3\include\atk-1.0
      D:\gtk3\include\atk-1.0\atk
      D:\gtk3\include\cairo
      D:\gtk3\include\fontconfig
      D:\gtk3\include\freetype2
      D:\gtk3\include\freetype2\freetype
      D:\gtk3\include\freetype2\freetype\config
      D:\gtk3\include\gail-3.0
      D:\gtk3\include\gail-3.0\libgail-util
      D:\gtk3\include\gdk-pixbuf-2.0
      D:\gtk3\include\gdk-pixbuf-2.0\gdk-pixbuf
      D:\gtk3\include\gio-win32-2.0
      D:\gtk3\include\gio-win32-2.0\gio
      D:\gtk3\include\glib-2.0
      D:\gtk3\include\glib-2.0\gio
      D:\gtk3\include\glib-2.0\glib
      D:\gtk3\include\glib-2.0\gobject
      D:\gtk3\include\gtk-3.0
      D:\gtk3\include\gtk-3.0\gdk
      D:\gtk3\include\gtk-3.0\gtk
      D:\gtk3\include\jasper
      D:\gtk3\include\libcroco-0.6
      D:\gtk3\include\libcroco-0.6\libcroco
      D:\gtk3\include\libpng15
      D:\gtk3\include\librsvg-2.0
      D:\gtk3\include\librsvg-2.0\librsvg
      D:\gtk3\include\libxml2
      D:\gtk3\include\libxml2\libxml
      D:\gtk3\include\lzma
      D:\gtk3\include\pango-1.0
      D:\gtk3\include\pango-1.0\pango
      D:\gtk3\include\pixman-1
      D:\gtk3\lib\glib-2.0\include           请注意这里还有两条不要忘记加,
      D:\gtk3\lib\libffi-3.0.12\include   
否则在编译时,会出现在 gtypes.h错误提示找不到glibconfig.h头文件。

四、一个HelloWorld测试程序

以下是一段网上查找的HelloWorld程序,本人初学者还不会写呢...

#include <gtk/gtk.h>

//主窗口中按钮的回调函数
void	on_button_clicked(GtkWidget* button, gpointer userdata)
{
	GtkWidget *dialog;
    //创建带确认按钮的对话框,父控件为空
	dialog = gtk_message_dialog_new(NULL,
			GTK_DIALOG_MODAL |GTK_DIALOG_DESTROY_WITH_PARENT,
			GTK_MESSAGE_INFO,
			GTK_BUTTONS_OK,
			(gchar*)userdata);
	gtk_dialog_run(GTK_DIALOG(dialog)); //显示并运行对话框
	gtk_widget_destroy(dialog);         //销毁对话框
}
//主函数
int	main(int argc, char* argv[])
{
	GtkWidget *window, *button;
	//初始化GTK+程序
	gtk_init(&argc, &argv);
	//创建窗口,并为窗口的关闭信号加回调函数以便退出
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	g_signal_connect(G_OBJECT(window),"delete_event",
			G_CALLBACK(gtk_main_quit),NULL);
	gtk_window_set_title(GTK_WINDOW(window),"Hello World!");
	gtk_container_set_border_width(GTK_CONTAINER(window),10);
	//创建按钮控件,为单击信号加回调函数,将其放入窗口中
	button=gtk_button_new_with_label("Hello World!");
	g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button_clicked),(gpointer)"你好!\n自由的世界。");
	gtk_container_add(GTK_CONTAINER(window),button);
	//下面函数显示窗口控件同时显示其中的所有其它控件
	gtk_widget_show_all(window);
	gtk_main();
	return FALSE;
}
正确的Build之后Run效果如图:

程序编译执行效果


如果你也看到这个画面,恭喜你!

你真的很幸运,一方面说明我的记录给别人带来了帮助,另一方面说明我自己的经历没有这么幸运咯~ 


下面是我在这个过程中遇到的几个问题和查到的解决方案:

   1. 在gtypes.h中,错误指向#include<glibconfig.h>,提示error: glibconfig.h  No such file or directory。

   错误方案:绝对不是去网上随便下载一个glibconfig.h然后添加到include目录下,这样会引来更多错误。

                     该头文件是由编译glib函数库自动产生的,在D:\gtk3\lib\glib-2.0\include目录下

   正确方案:"Project"→"build options"  选“Search directories”标签    在"Compiler"子标签中加一头文件路径,

                     继续添加一个头文件路径:D:\gtk3\lib\glib-2.0\include

   2.编译时发现,单行注释符号//会出错,改成多行注释符号/**/后编译正确。

   正确方案:默认用ANSI C规范的编译器选项,不识别C++中的单行注释,去掉含-ansi编译选项前的钩,即可。

  去掉-ansi该编译选项前的钩

    3.GTK3的程序中的中文“你好,自由的世界”无法正常显示!如下图

    中文无法显示

    正确方案:“Settings”→“Editor” 选择“Other settings”标签,将Encoding改成UTF-8,并选中Use this encoding的As default encoding选项,如下图所示

修改编码设置


以上,是我目前所遇到的所有问题。如文中有文笔描述上的问题,欢迎提出~  同时若该过程有遇到其他的问题,也欢迎提出一起解决~


本文参考链接有如下:

1.CodeBlocks配置GTK+2和GTK+3

以及作者He YiJun对问题1慷慨解答,半夜2点回复的邮件,我刚好看到便起床,成功的测试了第一个demo,并记录下此过程。

2.一个CodeBlocks注释问题(不能用//单行注释)





在学习嵌入式开发时,正确配置开发环境是第一步。为了帮助你理解这一过程,可以参考《CodeBlock入门教程:零基础转战AVR开发》。这本书详细介绍了如何在CodeBlock中设置AVR开发环境,适合初学者和那些寻找开源解决方案的开发者。 参考资源链接:[CodeBlock入门教程:零基础转战AVR开发](https://wenku.csdn.net/doc/8319orrdve?spm=1055.2569.3001.10343) 首先,你需要访问CodeBlocks官方网站下载并安装最新版本的CodeBlock。接着,下载并安装WinAVR,这是一个包含了AVR-GCC编译器的软件包,它能将C语言代码编译成可以在AVR微控制器上运行的机器代码。 安装完成后,打开CodeBlock并创建一个新的工程,选择AVR作为工程类型。在工程设置中,你需要指定工程名称、路径,以及目标微控制器的型号和时钟频率。这样配置后,编译器就可以正确地处理与微控制器相关的特定代码,如延迟函数。 接下来,你可以创建一个新的C文件,在这个文件中编写LED闪烁程序。一个典型的LED闪烁程序会使用IO端口操作函数来控制LED的开和关。示例代码如下: (代码示例、编译和烧录步骤、验证程序运行) 通过以上步骤,你将能在CodeBlock中完成AVR开发环境配置,并通过编写简单的LED闪烁程序来验证环境设置是否成功。如果你希望深入学习AVR开发和CodeBlock的高级功能,建议继续阅读《CodeBlock入门教程:零基础转战AVR开发》。这本书不仅能帮助你掌握基础知识,还能在你的学习道路上提供更深入的见解和技巧。 参考资源链接:[CodeBlock入门教程:零基础转战AVR开发](https://wenku.csdn.net/doc/8319orrdve?spm=1055.2569.3001.10343)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值