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编辑过]