windows gtk+开发环境搭建方法详解(图解)

2023-05-16

GTK+开发环境搭建

“工欲善其事,必先利其器”首先介绍一下GTK+开发环境的搭建,网上很多所谓的GTK的开发环境的搭建基本都是抄来抄去,也不知道有没有人使用他们介绍的方法搭建并编译成功,很不幸的是我使用他们写的方法没有搭建成功,所以有必要再增加一个原创版本来介绍GTK+开发环境的搭建,这里介绍windows下两种环境搭建的方法,ubuntu的我就不说了,apt-get的功能真是太强大,直接sudo apt-get install gtk+2.0就搞定了,使用gcc编译添加编译条件就没问题了.现在说说windows吧!第一种是使用VS开发环境,我打算基于VS2012来讲解,我的电脑里装的是2012;另一种是使用codeblocks开发工具.

准备步骤一:

首先是gtk+开发包版本的选择,这个非常重要,我在搭建的时候参考了非常多的资料,官方的资料、个人的心得,怎么都没有成功,最后偶然的机会发现是版本的问题。gtk+的官网上windows下的开发包分成32bit和64bit的,

wps_clip_image-25902

网上我看到的文章说的都是根据自己的系统选择开发包版本,我的系统是windows 8.1 x64 pro版本,足够新了吧!很多软件开发人员喜欢xp系统,但是我认为最新的东西才是适合软件开发人员的,如果我们自己都固步自封,怎么做出好的东西给客户呢,新的东西虽然冒险,但是你可以根据自己项目的特点进行取舍,现在大家不喜欢用新东西的原因无非是出了问题无法很容易的找到解决方案,这个看自己了!我这是自己折腾着玩,没有老板在后面催着,所以我选择最新的系统、最新的开发包。无论是你的系统是32bit还是64bit的,不要根据系统选择开发包,要根据编译器是32bit还是64bit来选择开发包,无论VS2012还是codeblocks默认的编译器都是32bit的,所以选择32bit的开发包即可,由于gtk+是使用gcc编译的或者minGW,使用VS2012的MS编译器有点小问题,但是不影响使用。到www.gtk.org网站上下载gtk All-in-one bundle版本,这个版本打包了所有需要的文件,比较方便,我下载的是gtk+bundle_3.6.4-20130921_win32.zip和gtk+bundle_2.24.10-20120208_win32.zip是目前3.x和2.x最新的版本了。

wps_clip_image-27600

为什么下载2.x的是给codeblocks准备的,codeblocks不支持直接创建3.x版本的开发环境,但是支持从2.x版本直接创建gtk+工程,

wps_clip_image-30983

这个稍后再讲。现在开始:

准备步骤二:

将下载的开发包压缩文件解压缩到一个文件夹内,在环境变量的path下将这个文件夹下的bin目录添加进去,

wps_clip_image-6715

这个目录是我试验64bit时的截图,不用纠结这个。

wps_clip_image-6023

添加完成之后,你们可以试着运行bin目录下的gtk3-demo.exe,如果配置没有错误将会出现GTK+ Code Demos的窗口,这就说明你的配置是没有错误的。

wps_clip_image-2716

准备工作完毕,现在可以开始了。

VS2012搭建GTK+开发环境

1.新建一个空的C++项目,Visual C++—常规—空项目

wps_clip_image-1890

2.右键项目—选择“属性”,打开属性设置。

wps_clip_image-2607

3.配置属性—C/C++—常规—附加包含目录—编辑

wps_clip_image-25815

4.添加新行

wps_clip_image-104

将开发包的include文件夹添加进去,

wps_clip_image-27916

需要添加的目录有:

include,及include下的所有文件夹(atk-1.0,cairo,fontconfig,freetype2,gail-3.0,gdk-pixbuf-2.0,gio-win32-2.0,glib-2.0,jasper,libcroco-0.6,libpng15,librsvg-2.0,libxml2,lzma,pango-1.0,pixman-1),和lib文件夹下的glib-2.0\include、libffi-3.0.12\include(千万不要忘记这两个文件)。很不幸的是这些文件夹只能一个一个的添加,不能批量添加。添加完成之后会像这样。

wps_clip_image-25413

5.配置属性—链接器—常规—附加库目录—编辑,将lib目录添加进去

wps_clip_image-25905

6.配置属性—链接器—输入—附加依赖项—编辑,将lib文件夹下则*.lib文件全部添加进去,我的lib目录下有:

atk-1.0.lib

cairo.lib

fontconfig.lib

gailutil.lib

gdk_pixbuf-2.0.lib

gdk-win32-3.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

wps_clip_image-5581

添加完成之后像这样:

wps_clip_image-16079

每行回车,后面没有“;”

7.新建一个main.cpp文件,在文件中输入


复制代码
代码如下:

#include <stdlib.h>
#include <gtk/gtk.h></p> <p>static void helloWorld (GtkWidget *wid, GtkWidget *win)
{
GtkWidget *dialog = NULL;</p> <p> dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}</p> <p>int main (int argc, char *argv[])
{
GtkWidget *button = NULL;
GtkWidget *win = NULL;
GtkWidget *vbox = NULL;</p> <p> /* Initialize GTK+ */
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
gtk_init (&argc, &argv);
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);</p> <p> /* Create the main window */
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (win), 8);
gtk_window_set_title (GTK_WINDOW (win), "Hello World");
gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
gtk_widget_realize (win);
g_signal_connect (win, "destroy", gtk_main_quit, NULL);</p> <p> /* Create a vertical box with buttons */
vbox = gtk_vbox_new (TRUE, 6);
gtk_container_add (GTK_CONTAINER (win), vbox);</p> <p> button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);</p> <p> button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
g_signal_connect (button, "clicked", gtk_main_quit, NULL);
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);</p> <p> /* Enter the main loop */
gtk_widget_show_all (win);
gtk_main ();
return 0;
}


然后运行,得到:

wps_clip_image-30778

到此一个可以使用的VS的GTK+开发环境搭建完毕。这样的步骤本人一步步试验得来,应该没有错误。可放心使用,哈!

codeblocks下搭建GTK+开发环境

我的codeblocks是12.11版本,是目前最新的codeblocks版本,如果使用2.x版本的GTK+那么建立一个GTK+工程很容易。

1.选择GTK+ progect

wps_clip_image-16338

2.next—填写工程名字

可以随便填写

3.选择开发包的直接根目录

wps_clip_image-6642

如果出现上面的提示证明你使用的是3.x的开发包。出现上面错误是因为codeblocks的问题,你只需要重新指定一个指向2.x开发包的目录即可。

选择“next”,并点击“finsh”,至此一个新的GTK+工程就完成了。

如果你原来添加到环境变量path下的目录要更改成现在这个新目录了,否则会有错误提示。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows gtk+开发环境搭建方法详解(图解) 的相关文章

  • zynqmp zcu102 arm 裸机UDP

    sdk2017没有udp例程只有tcp例程 以下是调试通的udp例程 xff1a 1 创建lwip测试工程或者在现有工程添加lwip库 2 添加udp代码 xff0c 也可以从tcp例程修改 xff1a int udpinit struct
  • 在自平衡中角动量守恒的原理分析

    角动量守恒原理 xff1a 对于单个转动物质 xff1a 角动量L 61 I w xff08 I 转动惯量 w xff1a 转动角速度 xff09 一般形状的物体转动惯量计算如下 xff1a 1 对于细杆 xff08 1 xff09 当回转
  • Memcached安装 查看memcached状态 Memcached语法规则  memcached数据导出和导入

    使用yum安装Memcached memcached依赖于libevent 在安装memcached之前需要检查libevent是否安装 rpm qa libevent root 64 harry 01 yum list grep memc
  • AWS EC2 学习之: 使用 PuTTY 从 Windows 连接到 Linux 实例

    启动您的实例之后 xff0c 您可以连接到该实例 xff0c 然后像使用您面前的计算机一样来使用它 注意 启动实例后 xff0c 需要几分钟准备好实例 xff0c 以便您能连接到实例 检查您的实例是否通过了状态检查 您可以在 Instanc
  • LDA的演变1--从算法层面来介绍LDA的由来或者说发展

    主要是从算法层面来介绍LDA的由来或者说发展 文本挖掘的研究对象是文本 xff0c 比如对文本进行分类或者情感分析等 由于文本是一种非结构化的数据 xff0c 这样就不利于计算机的处理 xff0c 所以研究者们开始对文本进行数字化处理 最开
  • OPC协议学习笔记

    OPC全称是Object Linking and Embedding xff08 OLE xff09 for Process Control xff0c 它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁 换句话说 xff0
  • 一招教你如何写好技术文档?

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 方案设计文档该怎么写 xff1f 你是不是从来没有想过这个问题 xff1f 很多技术人自己非常轻视技术文档的书写 xff0c 然而又时常抱怨文档不完
  • 太卷了!为随时随地敲代码,他手撸了一台Linux掌上电脑

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 手搓一台巴掌大小Linux电脑 xff0c 只需树莓派加点儿零件就行 xff1f 是的 xff0c 你没看错 xff0c 有人都做出来了 xff01
  • 中国智造人形机器人,刑天!技术水平如何?

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 今年10月 xff0c 特斯拉举办2022 AI Day活动 xff0c Tesla Bot人形机器人擎天柱 xff08 Optimus xff09
  • 设计完美的PCB,这些细节要注意

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 01 布局 元器件布局的10条规则 xff1a 1 遵照 先大后小 xff0c 先难后易 的布置原则 xff0c 即重要的单元电路 核心元器件应当优
  • 计算机,会是下一个土木专业吗?

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 大家好 xff0c 我是麦叔 最近看到一个热门问题 xff1a 计算机专业是否会成为下一个土木工程 xff1f 这个问题我想大多数准备学习计算机方向
  • 改变世界的数学公式,yyds

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 数学一直是我认为非常神奇的学科 上学期间不知数学有何用 xff0c 甚至觉得数学专业连工作都找不到 xff0c 才知道自己原来的认知简直太渺小了 x
  • 你们都开工了,我才刚开始复盘

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 大家好 xff0c 我是小麦 自从阳康之后已经连续忙了快一个月 甚至春节都没有休息 xff0c 大年初一还工作到凌晨 地球不爆炸 xff0c 我们不
  • 卖网红饮品喜茶配方,他一年赚50万

    前两天我去了一趟广州 xff0c 参加了一个内部圈子的交流会 xff0c 加过我微信的朋友可能会看到 在交流会上 xff0c 认识了一个年轻小伙子 xff0c 大伙称呼他为豪哥 xff0c 在分享会上他讲述了自己卖喜茶配方年赚50万的创业历
  • 入职新公司被要工资流水!这背后到底有什么猫腻?

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 关于 什么时候工资流水成了新人入职必须提供的资料项之一 这件事 xff0c 作为一个打工人还是多少了解一下背后的原因的 其实要说以前 xff08 不
  • 俄罗斯自研的CPU,能用吗?

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 从 2014 年吞并克里米亚到 2022 年的俄乌战争 xff0c 俄罗斯和西方世界的冲突愈发加剧 xff0c 在能源和科技上的相互制裁不断升级 在
  • 爆一下年终奖

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 各个公司的年终奖大多尘埃落定了 xff0c 大环境说实话不是很好 xff0c 有人欢喜有人愁 xff0c 汇总了一波 xff0c 大概50位小伙伴的
  • ChatGPT火爆,背后的核心到底是什么?

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 2022年12月份的时候 xff0c ChatGPT还只是个被人各种撩的聊天工具 但进入2023年后 xff0c 已经向着效率工具迈进了 微软宣布正
  • 不小心当上CTO了

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 大家好 xff0c 我是小麦 在知乎上看到一篇从创业公司的工程师一路成长为CTO的真实故事 看完我获益匪浅 在这里分享给大家 01 创业初期 在创业
  • 盘点一下电子嵌入式相关的公司

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 大家好 xff0c 我是小麦 最近入坑电子信息工程专业的表弟问我毕业能去干什么 xff1f 于是在这里盘点了一下电子嵌入式相关的公司 在这里和大家分

随机推荐

  • C# 解析ini类型文件详解

    1 什么是ini文件 INI文件是一种配置文件格式 xff0c 通常用于Windows操作系统中的应用程序中 它是一种文本文件 xff0c 由多个节和键值对组成 xff0c 用于存储应用程序的配置信息 INI文件的特点包括 xff1a IN
  • CAN总线显性电平和隐性电平详解

    相关文章 CAN总线简易入门教程 CAN总线显性电平和隐性电平详解 STM32的CAN总线调试经验分享 CAN 信号线 CAN 传输的两条信号线被称为 CAN H 和CAN L 通电状态 xff1a CAN H xff08 2 5V xff
  • STM32的CAN总线调试经验分享

    相关文章 CAN总线简易入门教程 CAN总线显性电平和隐性电平详解 STM32的CAN总线调试经验分享 文章目录 相关文章背景CAN总线CAN控制器CAN收发器 调试过程硬件排查CAN分析仪芯片CAN控制器调试 总结 背景 最近负责的一个项
  • 我的新副业

    大家好 xff0c 我是麦叔 聊聊我的新副业吧 尝试做了一段时间餐饮 xff0c 差不多有半年时间了 感触很深 在这里和大家分享一下 缘起 去年10月份朋友的店铺转让 xff0c 于是我就盘下来了 店面不大 xff0c 投入也不是很大 xf
  • 螺旋桨拉力

    介绍 螺旋桨拉力计算公式 直径 xff08 米 xff09 X 螺距 xff08 米 xff09 X 桨宽度 xff08 米 xff09 X 转速 xff08 转 秒 xff09 X 经验系数 xff08 0 25 xff09 61 拉力
  • 爆炸了!但YYDS

    正文共 xff1a 2962字 预计阅读时间 xff1a 8分钟 成功发射 xff0c 但在空中爆炸了 这一刻 xff0c 我们都仰望星空 北京时间 4 月 20 日晚 9 点半 xff0c 随着倒计时声音的结束 xff0c 在 Space
  • 赞爆了!Tabby 这款开源工具真的好用!

    点击上方 小麦大叔 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达
  • 惠普暗影精灵VMware安装CentOS7显示[此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态]

    进入BIOS页面开启CPU虚拟化处理技术 电脑开机时按 ESC 键进入系统启动菜单 然后按F10进入BIOS页面 xff0c 开启 处理器虚拟化技术
  • Python的main函数

    在 Python 中 xff0c 程序的入口点通常指的是一个特定的函数 xff0c 即 main 函数 这个函数是程序的起点 xff0c 也是程序的入口 xff0c 通过调用 main 函数 xff0c 程序开始执行 在 Python 中
  • CMakeList静态库多层嵌套问题 undefined reference to

    前言 被一个问题缠绕了很长时间 xff0c 这两天花精力好好研究了一下 xff0c 总算解决了 xff0c 翻过来看 xff0c 就是自己不注意造的很多小问题 我的想法是把一些代码封装起来 xff0c 但是有些部分要求能让现场工作同事有一定
  • gazebo仿真环境中 加入传感器

    1 传感器加入自己的模型中需要那些步骤 1 节点说明 xff0c 链接关系 lt robot name 61 test gt lt link name 61 34 link1 34 gt lt link name 61 34 link2 3
  • 以下为Windows NT 下的32 位C++程序,请计算sizeof 的值

    char str 61 Hello char p 61 str int n 61 10 请计算 sizeof str 61 sizeof p 61 sizeof n 61 答案 6 4 4 void Func char str 100 请计
  • vue实现显示10条数据点击查询看更多

    vue实现显示10条数据点击查询看更多 要求如下 当页面的数据超过10条时只显示10条 且显示 点我查看更多喔 每次点击 页面数据增加10条 思路解析 如题 假设有20条数据 只显示10条 点击查看更多按钮 span class token
  • 433和2.4G无线通信比较

    DSSS 2 4G无线数据传输系统优势 一 很正常的升级换代 xff1a 系统工作的长期稳定性和可靠性 xff0c 是一个无线通信系统最重要的指标 由于一般433兆及915兆产品使用的是低频窄带通信技术 xff0c 它们的工作频率范围很窄5
  • Android adb dumpsys 命令总结

    adb shell dumpsys 有哪些命令可以用 xff0c 可以使用adb shell service list来查看 查看package这个service的帮助信息 adb shell dumpsys package h 查看act
  • 在STM32中实现ROS节点——Rosserial的用法

    目录 内容介绍前言生成要移植到stm32的自定义消息和服务生成针对stm32的移植库包roslibs在Mdk中实现C和C 43 43 代码混合编译修改mdk配置修改stm32 ROS通讯接口驱动测试补充说明 内容介绍 本文介绍如何将stm3
  • ubuntu下用apt-get install 安装软件时出现 initramfs-tools错误

    错误提示 xff1a gzip stdout No space left on device E mkinitramfs failure cpio 141 gzip 1 update initramfs failed for boot in
  • ubuntu虚拟机下桥接模式,静态ip上网

    近期使用VM安装了ubuntu12 10玩玩 xff0c 途中也遇到了许多问题 xff0c 安装完成后 xff0c 系统默认是选择NAT连接方式的 xff0c 可以直接通过火狐浏览器上网 xff08 不需任何设置 xff0c 系统自己配置好
  • Windows下安装GTK+(整理)

    以下为网上摘的 xff0c 自己把它整理在了一起 WINDOWS下实现GTK 43 GTKMM的编程 xff08 一 xff09 下载软件包 1 下载dev C 43 43 开发软件 xff08 我的版本是4 9 9 2 xff09 2 下
  • windows gtk+开发环境搭建方法详解(图解)

    GTK 43 开发环境搭建 工欲善其事 必先利其器 首先介绍一下GTK 43 开发环境的搭建 网上很多所谓的GTK的开发环境的搭建基本都是抄来抄去 也不知道有没有人使用他们介绍的方法搭建并编译成功 很不幸的是我使用他们写的方法没有搭建成功