GCC 编译 Windows API 程序
前言
这学期学可视化程序设计,要使用 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 程序的更多相关文章
- GCC编译Win图形程序不显示控制台方法
用VS编译openCV这些有控制台又有图形显示的程序,如果想隐藏控制台,只需要使用一行代码: #pragma comment( linker, "/subsystem:/"wind ...
- Fedora 11中用MinGW编译Windows的Qt4程序(在Linux系统下编译Windows的程序)
Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...
- linux下使用gcc编译运行C程序
gcc(GNU Compiler Collection)是Linux下最常用的C语言编译器,是GNU项目中符合ANSI C标准的编译系统,能够编译用C.C++和Object C等语言编写的程序. 在 ...
- 在文件夹中 的指定类型文件中 查找字符串(CodeBlocks+GCC编译,控制台程序,仅能在Windows上运行)
说明: 程序使用 io.h 中的 _findfirst 和 _findnext 函数遍历文件夹,故而程序只能在 Windows 下使用. 程序遍历当前文件夹,对其中的文件夹执行递归遍历.同时检查遍历到 ...
- Mingw:在Linux系统下编译Windows的程序
Ubuntu下可以直接安装: sudo apt-get install mingw32 mingw32-binutils mingw32-runtime 安装后编译程序可以: i586-mingw32 ...
- 用gcc编译c语言程序以及其编译过程
对于初学c语言编程的我们来说,学会如何使用gcc编译器工具,对理解c语言的执行过程,加深对c语言的理解很重要!!! 1.预编译 --> 2.编译 --> 3.汇编 --> 4.链接- ...
- gcc编译c语言程序
编译:当前源代码编译成二进制目标文件(.obj文件) 链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件). 一个现代编译器的主要工作流程如下: 源程序 ...
- windows api 程序
#include "StdAfx.h" #include<windows.h> #include<mmsystem.h> LRESULT CALLBACK ...
- gcc编译minigui新程序报错
!ggcc *.c -ljpeg -lpng -lminigui -lpthread/usr/local/lib/libminigui.so: undefined reference to `dl ...
随机推荐
- 【翻译】追溯“typeof null”的历史
我的翻译小站:https://www.zcfy.cc/article/the-history-of-typeof-null 翻译原文链接:http://2ality.com/2013/10/typeo ...
- Checkpoint--在Tempdb上的特殊性
由于Checkpoint的目的是为减少数据库恢复时间,而每次实例重启都会创建新的tempdb,而不需要恢复,因此checkpoint在Tempdb上行为与其他用户数据库上略微不同. 1. 系统引发的c ...
- signalR常见问题
一.安装signalR会对应安装自己的NewJson包,如果引用了含有不同NewJson包的dll组件,会造成版本不一致.必须在运行环境中指出使用目标版本. 问题截图: 解决方式: <runti ...
- 使用客户端软件向服务端php程序发送post数据,php接受三种方法
方法一:$_POST; 方法二:$GLOBALS['HTTP_RAW_POST_DATA'],需要在php.ini开启 always_populate_raw_post_data = On: 方法三: ...
- XML Web Service架构图
- day 108 项目luffy &contenttype
反向查询 反向查询 路飞学城项目 一.建模型 models from django.db import models from django.contrib.contenttypes.field ...
- UIVisualEffectView(高斯模糊效果)
///高斯模糊. UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; tempView. ...
- robot framework —— 变量文件
何为变量文件? 变量文件中包含了测试数据中的变量.虽然变量可以通过变量表格中创建, 或者通过命令行设置, 不过这些方法有所局限, 而变量文件可以动态地创建任意类型的变量. 变量文件一般由Python模 ...
- JVM内存参数( -Xms -Xmx -Xmn -Xss 直接内存)
JVM调优总结 -Xms -Xmx -Xmn -Xss jvm 内存 在不同的情况下如何增大 及 PermGen space 相关 JVM日志和参数的理解 JVM崩溃Log日志分析 -Xms 为jvm ...
- 《JAVA与模式》之代理模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述代理(Proxy)模式的: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式的结 ...