标题:C语言Win7Gui编程环境=开源?(Win7+Msys2+Gtk3):(Win7+Vs20XX)
只看楼主
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1501
专家分:6573
注 册:2010-7-5
结帖率:91.53%
已结贴  问题点数:1 回复次数:2 
C语言Win7Gui编程环境=开源?(Win7+Msys2+Gtk3):(Win7+Vs20XX)
我终于又忍不住要搞C语言的GUI了,这是什么梗……治不好的梗。
下面记录一下过程。要用到的是Win764位+Msys2环境。Win8、Win10也可以参照一下。
比我还新的新手,可以参考我前面写的EditPlus+Msys2搭建C学习环境的文章。
https://bbs.bccn.net/thread-493834-1-1.html

参照官网给出的下载和安装帮助。https://www.

正文(以64位系统为例):
+++++++++++++安装配置部分+++++++++++++
1、从开始菜单打开“MSYS2 MSYS”,查询关于GTK的包。
程序代码:
Administrator@????????????? MSYS ~  //中文计算机名,连打马赛克都省了……
# pacman -Ss gtk3
mingw32/mingw-w64-i686-gtk3 3.24.5-1  //32位对应C语言的
    GObject-based multi-platform GUI toolkit (v3) (mingw-w64)
mingw32/mingw-w64-i686-gtkmm3 3.24.0-1  //32位对应C++的
    C++ bindings for gtk3 (mingw-w64)
mingw32/mingw-w64-i686-spice-gtk 0.35-3
    GTK3 widget for SPICE clients (mingw-w64)
mingw32/mingw-w64-i686-webkitgtk3 2.4.11-6
    GTK+ Web content engine library (mingw-w64)
mingw64/mingw-w64-x86_64-gtk3 3.24.5-1  //64位对应C语言的
    GObject-based multi-platform GUI toolkit (v3) (mingw-w64)
mingw64/mingw-w64-x86_64-gtkmm3 3.24.0-1  //64对应C++的
    C++ bindings for gtk3 (mingw-w64)
mingw64/mingw-w64-x86_64-spice-gtk 0.35-3
    GTK3 widget for SPICE clients (mingw-w64)
mingw64/mingw-w64-x86_64-webkitgtk3 2.4.11-6
    GTK+ Web content engine library (mingw-w64)


知道了包的名称,就可以安装了。
# pacman -S mingw-w64-x86_64-gtk3


我发现Linux安装程序有时候,比Windows还要简单。整个包装过程中,按一下Y,回车等着就可以了。

2、Devhelp包,可以得到一些开发过程中的帮助信息。虽然基本看不懂,翻译呗,比没有强。
# pacman -Ss devhelp  //查询可安装的包
# pacman -S mingw-w64-x86_64-devhelp  //安装64位的,貌似只有Gtk2的帮助?还是我没看到gtk3的。难道又需要更新什么东西?


3、如果你想用C,C ++,Fortran等其他语言开发GTK3应用程序,你需要像gcc和其他开发工具这样的编译器:
# pacman -S mingw-w64-x86_64-toolchain base-devel


+++++++++++++随便找个源码+++++++++++++
可以使用GTK官方教程的源码,试试编译后的效果。https://developer.
还可以在命令提示符运行gtk3-demo,里面的源码就太多了。
我的代码是官方的那个,改了标签文本,送别消防战士,救火英雄。
程序代码:
#include <gtk/gtk.h>

static void print_hello(GtkWidget *widget,gpointer data){
    g_print ("Hello World\n");
}

static void activate(GtkApplication *app,gpointer user_data){
    GtkWidget *window;
    GtkWidget *button;
    GtkWidget *button_box;

    window = gtk_application_window_new (app);
    gtk_window_set_title (GTK_WINDOW (window), "这里是窗口标题");
    gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);

    button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
    gtk_container_add (GTK_CONTAINER (window), button_box);

    button = gtk_button_new_with_label ("救火英雄们,一路走好!");
    g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
    g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
    gtk_container_add (GTK_CONTAINER (button_box), button);

    gtk_widget_show_all (window);
}

int main(int argc,char **argv){
    GtkApplication *app;
    int status;

    app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
    g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
    status = g_application_run (G_APPLICATION (app), argc, argv);
    g_object_unref (app);

    return status;
}


+++++++++++++编译部分+++++++++++++
这里是新手最头疼的部分,Linux的东西,现在安装是太方便了,可是,配置,还是不太自动。我配置了一上午,也没把编译功能加到EditPlus里,也就是说在命令提示符中,没法直接编译。
必须打开Msys2的Shell才能编译成功,而且路径还特别长。还好能复制、粘贴……,如下图:

命令也贴上来,以备以后复制,省事。
Administrator@????????????? MSYS ~
# C:/msys64/mingw64/bin/gcc.exe d:/studyC/gtk3test.c -o d:/studyC/gtk3test.exe `c:/msys64/mingw64/bin/pkg-config --cflags --libs gtk+-3.0`


+++++++++++++运行部分+++++++++++++
帖子里都说了,第一次运行,必定会要这个dll,要那个dll的。所以,我在d:\studyC下面又那了个文件夹gtkDll,把编译好的程序复制到里面运行。这样就可以知道他到底要用到多少个DLL了。
不过,还好,这个程序简单,只要了一个。zlib1.dll,搜索msys2的安装路径 ,如C:\msys64,就可以找到了。
运行效果图如下:


+++++++++++++总结+++++++++++++
不足的地方:
一、没能把编译的路径搞明白,Windows的路径已经设置了,应该就是Msys2本身的路径还没配置好。接下来要好好研究一下;
二、gtk后面总跟个黑乎乎的命令提示符窗口,要想办法拿掉。

展望:
据说,Chrome和firefox都是用GTK开发的,让我顿时充满了学习的能量……

参考的一些文章:
主要来源:https://tieba.baidu.com/p/5774380678?red_tag=1360415527
要重点看一看的:https://blog.
其他参考文档:https://blog.

[此贴子已经被作者于2019-4-3 16:24编辑过]

搜索更多相关主题的帖子: Win7 gtk 安装 window app 
2019-04-03 11:57
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1501
专家分:6573
注 册:2010-7-5
得分:0 
同时也求助一下,我楼上不明白的地方,尤其是Msys2内部的路径配置问题,还请大神们赐教。

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-04-03 12:01
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
得分:1 
win环境下命令提示符窗口可以在编译器(gcc)的编译指令加上 -mwindows 去掉...codeblocks之类的在编译器设置菜单里设置加上这个指令,VS的话通过建立窗口工程解决
但是使用GTK的话,没尝试不清楚是否有效,不过如果通过命令提示符直接以附加指令调用gcc编译应该是ok的,毕竟开发环境其实最后还是要使用编译器的
2019-04-04 00:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-493943-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016303 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved