一、介绍与准备

考虑到目标客户端基本都是windows客户端,所以此次开发环境将搭建在windows7下,相关开发工具有Msys2 和 Eclipse For C/C++

Msys2 是msys的升级版,更加好用的GNU环境,目前比较推荐的windows下的集成工具。

Eclipse For C/C++ 专门开发C/C++的Eclipse版本。 对于开发java的同学不会陌生。

二、Eclipse For C/C++

1、下载Eclipse

https://www.eclipse.org/downloads/eclipse-packages/

2、下载版本建议

Eclipse Luna (4.4)   由于本人笔记本很老了,配置也较低,所以使用了Luna这个版本,个人感觉这个版本比较流畅。

三、Msys2

1、下载Msys2

http://www.msys2.org/

2、下载版本建议

如果你的windows系统是xp(或者windows7,8,10的32位系统),则建议下载32位的版本,如果是windows7以上的64位系统,则建议下载64位的版本。

3、安装与配置

安装:选择好安装目录(建议除C盘以外的其他盘符),一路下一步就可以了。

配置:

相关详细配置过程请详见

http://www.cnblogs.com/yunfeng83/p/7348311.html   (MSYS2使用教程)

配置要求:我们使用32位的MinGW,所以在下载gcc gtk等相关类库时,注意使用 i686版本的。

其中在安装常用工具类库时,可以只安装base-devel ,其他git wget 等不用安装。

遇到的问题:

1、使用Eclipse创建C 项目时Toolchains选项会没有 MinGW GCC

2、项目创建好后,项目的Properties---C/C++ Build中提示“Toolchain "MinGW GCC" is not detected. Refer to "C/C++ Development User Guide", "Before you begin" how to install toolchains.”

问题解决:

这两个问题其实是一个地方导致的,就是用msys2 下载编译的mingw 文件夹下的gcc 找不到,所以Eclipse默认就不会显示MinGW GCC 和这个提示了。

Eclipse官方给出的解答如下:

http://wiki.eclipse.org/CDT/User/FAQ#I_installed_MinGW_toolchain_on_my_PC_but_Eclipse_won.27t_find_it.

需要将下载的i686-w64-mingw32-gcc.exe 重名为mingw32-gcc 就可以了。

我们把i686-w64-mingw32-gcc.exe 复制一下,并重名为mingw32-gcc 就解决这两个问题了。

四、配置Eclipse

1、创建一个C项目

如果按要求配置了gcc,则Eclipse在创建项目时,就会显示出MinGW GCC 。

可以正常编译了,就好了。

将GTK类库配置到Eclipse中去。

1、利用msys2的pkg-config命令得到GTK类库及其相关路径。

  1. pkg-config gtk+-3.0 --libs > /tmp/libs.txt
  1. pkg-config gtk+-3.0 --cflags > /tmp/cflags.txt

将这些类库路径与lib导出到tmp文件夹下的libs 和 cflags 文本文件中。

  1. -mms-bitfields -pthread -mms-bitfields -ID:/msys64/mingw32/include/gtk-3.0 -ID:/msys64/mingw32/include/cairo -ID:/msys64/mingw32/include -ID:/msys64/mingw32/include/pango-1.0 -ID:/msys64/mingw32/include/atk-1.0 -ID:/msys64/mingw32/include/cairo -ID:/msys64/mingw32/include/pixman-1 -ID:/msys64/mingw32/include -ID:/msys64/mingw32/include/freetype2 -ID:/msys64/mingw32/include/libpng16 -ID:/msys64/mingw32/include/harfbuzz -ID:/msys64/mingw32/include/glib-2.0 -ID:/msys64/mingw32/lib/glib-2.0/include -ID:/msys64/mingw32/include -ID:/msys64/mingw32/include/freetype2 -ID:/msys64/mingw32/include -ID:/msys64/mingw32/include/harfbuzz -ID:/msys64/mingw32/include/libpng16 -ID:/msys64/mingw32/include/gdk-pixbuf-2.0 -ID:/msys64/mingw32/include/libpng16 -ID:/msys64/mingw32/include/glib-2.0 -ID:/msys64/mingw32/lib/glib-2.0/include -ID:/msys64/mingw32/include

  1. -LD:/msys64/mingw32/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl

将cflags文件中开头到 -mms-bitfields -I 部分去掉,然后每路径前面的 -I 去掉,还有 D:/msys64/mingw32/include 也会多次出现,去掉重复的。

最终得到

  1. D:/msys64/mingw32/include/gtk-3.0
  2. D:/msys64/mingw32/include/cairo
  3. D:/msys64/mingw32/include/pango-1.0
  4. D:/msys64/mingw32/include/atk-1.0
  5. D:/msys64/mingw32/include/cairo
  6. D:/msys64/mingw32/include/pixman-1
  7. D:/msys64/mingw32/include/freetype2
  8. D:/msys64/mingw32/include/libpng16
  9. D:/msys64/mingw32/include/harfbuzz
  10. D:/msys64/mingw32/include/glib-2.0
  11. D:/msys64/mingw32/lib/glib-2.0/include
  12. D:/msys64/mingw32/include/freetype2
  13. D:/msys64/mingw32/include/harfbuzz
  14. D:/msys64/mingw32/include/libpng16
  15. D:/msys64/mingw32/include/gdk-pixbuf-2.0
  16. D:/msys64/mingw32/include/libpng16
  17. D:/msys64/mingw32/include/glib-2.0
  18. D:/msys64/mingw32/lib/glib-2.0/include
  19. D:/msys64/mingw32/include

将上面部分复制

在Include path的下面鼠标单击一下,然后Ctrl+ V 进行粘贴。将这些指复制过去。

再将libs.txt文件中的类库名称和 路径名称复制下来(去掉类库名称前面的-l),以照上面的操作步骤,把MinGW C Linker中的 Libraies 值赋值出来。

  1. D:/msys64/mingw32/lib
  2. gtk-3
  3. gdk-3
  4. gdi32
  5. imm32
  6. shell32
  7. ole32
  8. uuid
  9. winmm
  10. dwmapi
  11. setupapi
  12. cfgmgr32
  13. z
  14. pangowin32-1.0
  15. pangocairo-1.0
  16. pango-1.0
  17. atk-1.0
  18. cairo-gobject
  19. cairo
  20. gdk_pixbuf-2.0
  21. gio-2.0
  22. gobject-2.0
  23. glib-2.0
  24. intl

最终结果如下图

设置完成后 ‘Apply’ 这样就完成了所有配置,我们在coding时,也会有智能提示了。

我们把刚才新建的那个项目的Demo.c文件 ,重新编写。

  1. /*
  2. ============================================================================
  3. Name : Demo.c
  4. Author : GtkDemo
  5. Version :
  6. Copyright : Your copyright notice
  7. Description : Hello World in C, Ansi-style
  8. ============================================================================
  9. */
  10.  
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <gtk/gtk.h>
  14.  
  15. int main(int argc,char *argv[]) {
  16. //puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
  17. //return EXIT_SUCCESS;
  18. GtkWidget *window;
  19. gtk_init(&argc,&argv);
  20.  
  21. window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  22.  
  23. gtk_widget_show(window);
  24.  
  25. gtk_main();
  26.  
  27. return EXIT_SUCCESS;
  28.  
  29. }

然后重新编译

智能提示也有了。

运行结果。

OK。这样就可以正式的编写代码了。

基于GTK+3 开发远程控制管理软件(C语言实现)系列三 Windows7开发环境搭建的更多相关文章

  1. 基于GTK+3 开发远程控制管理软件(C语言实现)系列 一 开篇

    近期趁公司没项目来,想学习一下C和GTK+3 ,顺道再学习一下Linux下有关网络编程方面的知识. 一.学习知识: 1.C基本语法 2.GTK+3 API学习 GUI相关知识学习 3.Glade使用及 ...

  2. 基于GTK+3 开发远程控制管理软件(C语言实现)系列二 Centos7下开发环境搭建

    一.安装gcc gcc-c++ make等编译工具 yum install gcc gcc-c++ kernel-devel 这一步,其实可以不用做,你在安装Centos7的时候,如果选择开发模式安装 ...

  3. 仿OpenStack开发云计算管理软件

    仿OpenStack开发云计算管理软件 使用Python语言开发一套类似OpenStack的云计算管理平台LouCloud,具备基本的用户,服务器,镜像与 虚拟机管理功能,学习IaaS,虚拟化,Lib ...

  4. 【Qt开发】Qt在Windows下的三种编程环境搭建

    从QT官网可以得知其支持的平台.编译器和调试器的信息如图所示: http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.htm ...

  5. 用勤哲excel服务器开发旅行社管理软件

    做这个旅行社管理软件之前,旅行社给我的印象就是“拉客”与“接客”,业务模式应该比较简单.但做起这样一个旅行社管理软件,才发现麻雀虽小.五脏俱全,一个旅行社的运作,牵扯到的方方面面远远超出自己之前的理解 ...

  6. windows phone 8 开发系列(一)环境搭建

    一:前奏说明 本人一名普通的neter,对新玩意有点小兴趣,之前wp7出来的时候,折腾学习过点wp7开发,后来也没怎么用到(主要对微软抛弃wp7的行为比较不爽),现在wp8已经出来一段时间了,市场上也 ...

  7. Android实战开发租赁管理软件(适配UI,数据的存储,多线程下载)课程分享

    亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系. 课程内容简单介绍 我们软件是基于移动设备的.所以我们必定的选择了安卓作为我们的开发工具.课 ...

  8. 用java开发微信公众号:测试公众号与本地测试环境搭建(一)

    本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/5023678.html 俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一 ...

  9. SSM框架开发web项目系列(一) 环境搭建篇

    前言 开发环境:Eclipse Mars + Maven + JDK 1.7 + Tomcat 7 + MySQL 主要框架:Spring + Spring MVC + Mybatis 目的:快速上手 ...

随机推荐

  1. jQuery警告/确认/提示弹出对话框效果(替换传统JavaScript下的提示框)

    http://www.51xuediannao.com/js/jquery/jquery_tsk/ http://www.jq22.com/demo/jqueryConfirm20160413/

  2. Mybatis-Plus 实战完整学习笔记(二)------环境搭建

     第二章    使用实例   1.搭建测试数据库 -- 创建库 CREATE DATABASE mp; -- 使用库 USE mp; -- 创建表 CREATE TABLE tbl_employee( ...

  3. Ueditor Word图片转存交互

    三.Word图片转存交互 1.图片转存原理 所谓word图片转存,是指UEditor为了解决用户从word中复制了一篇图文混排的文章粘贴到编辑器之后,word文章中的图片数据无法显示在编辑器中,也无法 ...

  4. mysql_变量

    set names gbk; 变量 变量分为两种:系统变量,自定义变量 系统变量:系统定义好的,大部分情况用户不需要使用系统变量,如autocommit,auto_increment_incremen ...

  5. Curl工具的使用

      Curl命令可以通过命令行的方式,执行Http请求.在Elasticsearch中有使用的场景,因此这里研究下如何在windows下执行curl命令. 工具下载 在官网处下载工具包:http:// ...

  6. codeforces820B Mister B and Angle in Polygon 2017-06-28 09:42 123人阅读 评论(0) 收藏

    B. Mister B and Angle in Polygon time limit per test 2 seconds memory limit per test 256 megabytes i ...

  7. 第81讲:Scala中List的构造和类型约束逆变、协变、下界详解

    今天来学习一下scala中List的构造和类型约束等内容. 让我们来看一下代码 package scala.learn /** * @author zhang */abstract class Big ...

  8. python之基础1

    一.python介绍 介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名字 ...

  9. AFNetworking 3.0 AFHTTPSessionManager文件下载

    #import "ViewController.h" #import <AFNetworking.h> @interface ViewController () - ( ...

  10. 工作随笔——elasticsearch数据冷热分离、数据冷备

    概述: 适合日志类型的数据存储方案.即当日数据写入,历史数据只读. 节省部分硬件成本.热数据采用更好的硬件. 环境: 已有6个ES节点,使用docker-compose方式搭建. es1:master ...