前言

这学期学可视化程序设计,要使用 Windows API 绘制界面,由于笔者的笔记本硬盘太小,无法装臃肿的 VS(主要是不想装),也不想用 VC++ 6.0,所以就选用 GCC 来编译。

安装 msys2

下面为 64 位操作系统版本的 msys2 下载地址:

http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20180531.exe

下载完成后,像普通软件一样安装即可。

安装 toolchain

安装完成后,在开始菜单下会有如下目录结构:

|- \MSYS2
|- MSYS2 MinGW 32bit
|- MSYS2 MinGW 64bit
|- MSYS2 MSYS

关于三这区别参考这篇博文,安装 toolchain 选择哪个都行,但以后编译一定选择 MSYS2 MinGW 64/32bit,不然会提示命令找不到(主要原因是提供 MinGW 环境)。

选择三者其中一个打开 bash , 输入下面命令安装 toolchain :

pacman -S mingw-w64-x86_64-toolchain

编译第一个程序

编写一个内容如下的 hello world 源程序文件,接着切换到文件保存路径,然后输入命令 gcc hello.c (用 c++ 语言能否编写及怎么编写还未弄清)就会生成 a.exe,运行就会弹出一个 Hello world! 窗口。

hello.c

#include <windows.h>

int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow) {
MessageBox (NULL, "Hello world!", "Title",MB_OK);
return 0;
}

后话

由于笔者这学期刚学 Windows API 程序,没写过Windows API 程序和用 gcc 编译,所以使用 gcc 编译会有很多坑,若是不想折腾就使用 VC++ 6.0 或者 VS 。笔者会在博客上继续记录一些坑,同时会修改这篇文章的不当之处。

GCC 编译 Windows API 程序的更多相关文章

  1. GCC编译Win图形程序不显示控制台方法

    用VS编译openCV这些有控制台又有图形显示的程序,如果想隐藏控制台,只需要使用一行代码: #pragma comment( linker, "/subsystem:/"wind ...

  2. Fedora 11中用MinGW编译Windows的Qt4程序(在Linux系统下编译Windows的程序)

    Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...

  3. linux下使用gcc编译运行C程序

    gcc(GNU Compiler Collection)是Linux下最常用的C语言编译器,是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序.  在 ...

  4. 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)

    说明: 程序使用 io.h 中的 _findfirst 和 _findnext 函数遍历文件夹,故而程序只能在 Windows 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...

  5. Mingw:在Linux系统下编译Windows的程序

    Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...

  6. 用gcc编译c语言程序以及其编译过程

    对于初学c语言编程的我们来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对c语言的理解很重要!!! 1.预编译 --> 2.编译 --> 3.汇编 --> 4.链接- ...

  7. gcc编译c语言程序

    编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件).   一个现代编译器的主要工作流程如下: 源程序 ...

  8. windows api 程序

    #include "StdAfx.h" #include<windows.h> #include<mmsystem.h> LRESULT CALLBACK ...

  9. gcc编译minigui新程序报错

    !ggcc *.c  -ljpeg -lpng  -lminigui -lpthread/usr/local/lib/libminigui.so: undefined reference to `dl ...

随机推荐

  1. 使用for in循环遍历json对象的数据

    使用for in遍历json对象数据,如果数据中的名称有为数字的话,只对正整数有效,那么先会输出为正整数的数据,后面其他的会按照原来数据中定义的顺序不变输出. 针对名称为数字的json对象数据进行测试 ...

  2. Oracle EBS 采购 接收入库 接口开发

    http://blog.itpub.net/25164132/viewspace-746657/ 接收入库是项目中会经常碰到的开发,这类开发一般来说比较简单,但是接收入库在Oracle中其实涉及到很多 ...

  3. 在ContextLoaderListener中使用注解注入的类和job中使用注解注入的类

    场景:在ContextLoaderListener子类中加载job,为JobFactory的实现类声明@Component后,在ContextLoaderListener子类中为scheduler设置 ...

  4. [Openwrt 项目开发笔记]:Openwrt必要设置(二)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 前面的两篇blog中,我将如何搭建Openwrt ...

  5. mac下的抓包工具 -- Charles

    # 背景 换了mac电脑,

  6. C#全局键盘监听(Hook)

    一.为什么需要全局键盘监听? 在某些情况下应用程序需要实现快捷键执行特定功能,例如大家熟知的QQ截图功能Ctrl+Alt+A快捷键,只要QQ程序在运行(无论是拥有焦点还是处于后台运行状态),都可以按下 ...

  7. C#不用union,而是有更好的方式实现

    用过C/C++的人都知道有个union,特别好用,似乎char数组到short,int,float等的转换无所不能,也确实是能,并且用起来十分方便.那C#为什么没有这个关键字呢?怎么实现这个功能?其实 ...

  8. ASP.NET Core 2 学习笔记(六)MVC

    ASP.NET Core MVC跟ASP.NET MVC观念是一致的,使用上也没有什么太大的变化.之前的ASP.NET MVC把MVC及Web API的套件分开,但在ASP.NET Core中MVC及 ...

  9. ES6躬行记(22)——Promise

    在JavaScript中,回调函数是处理异步编程的常用解决方案,但层层嵌套的回调金字塔(如下代码所示)一直受人诟病,因为不仅在视觉上更加混乱,而且在管理上也更为复杂. setTimeout(() =& ...

  10. C++实现文件自校验的一种方法

    #include <iostream> #include <stdio.h> extern long FileSizeof(char *); int main() { if(F ...