学习使用cl.exe和linker.exe编译Windows API程序以及MFC程序

用cl.exe,linker.exe编译Windows API与MFC程序



一、一个简单的MFC程序

1、下载编译工具

  Visual Studio Community 2019

2、下载网址

  [https://visualstudio.microsoft.com/zh-hans/vs/](https://visualstudio.microsoft.com/zh-hans/vs/)

下载完成后,可参考网上安装教程完成安装。

3、建立一个MFC的projiect file

在这里插入图片描述
打开Visual Studio 2019,点击创建新项目;
在这里插入图片描述
在新项目的搜索栏搜MFC,选择MFC应用
在这里插入图片描述
配置新项目,可自定义项目名称和位置,点击创建
在这里插入图片描述
MFC应用程序类型,依照自己需求选择应用程序类型,本程序选择基于对话框,点击完成

4、界面设计过程

在这里插入图片描述
在资源管理器中找到资源文件,并打开后缀为.rc的文件
在这里插入图片描述
在dialog文件夹下,点击蓝色标识文件
在这里插入图片描述
点击后则显示该界面,删除此界面所有的控件
在这里插入图片描述
点击左侧工具箱,选择对话框编辑器,选择自己所需要的控件进行界面设计
在这里插入图片描述
这是完成的界面,双击“确定”,进入代码界面

5、 代码实现和分析

在这里插入图片描述
大部分代码已由编译工具自动生成,我们主要完成对控件通知处理的代码
1、整个MFC程序是一个猜数字的小游戏,在界面编辑处输入一个数字,输入数字是10以下的正整数,通过比较输入的数字与随机生成的数字,看两个是否相等,如果相等就表示猜测正确,否则表示猜测错误。
2、整个程序中包含对话框类,应用程序类 ,其中应用程序类继承应用程序基类,对话框类继承对话框基类。
3、结果演示
在这里插入图片描述


二、用cl.exe,linker.exe进行编译链接

1、环境变量配置

在这里插入图片描述
在此电脑控制面板中,找到系统与安全,双击系统;找到高级系统设置,然后双击
在这里插入图片描述
出现此界面,点击环境变量
在这里插入图片描述
在用户变量中选择path,点击编辑
在这里插入图片描述
在电脑中找到cl.exe的文件路径
在这里插入图片描述
将cl.exe文件路径复制,然后粘贴到新建的环境变量中
在这里插入图片描述
打开环境变量,点击新建,然后出现新建用户变量界面
变量名:LIB
变量值:vs所在电脑路径
在这里插入图片描述
在这里插入图片描述
填入后界面
在这里插入图片描述
再次点击用户变量处新建
变量名:INCLUDE
变量值:VS目录
在这里插入图片描述
设置完成,点击确定
至此,cl.exe的环境配置就完成啦。
下面测试一下cl命名是否可以正常执行。
打开Windows的cmd命名提示符。
在这里插入图片描述
输入cl,显示如下:表明配置成功
在这里插入图片描述

2、cl.exe,linker.exe编译链接Windows API程序

1、用VC2019写一个Windows API程序,点击保存
在这里插入图片描述
2、找到.cpp文件,在当前目录框内输入cmd,并敲回车键
在这里插入图片描述
没有其他显示,编译成功
在这里插入图片描述
3、链接API程序
在这里插入图片描述
点击项目-属性
在这里插入图片描述
点击 链接器-输入,在添加依赖项一栏,复制后面的依赖项
使用命令linker.exe.
使用命令linker.exe.
在这里插入图片描述
正确的link格式:
在这里插入图片描述
在这里插入图片描述
显示如下,即链接成功
在这里插入图片描述
输出结果
在这里插入图片描述

3、cl.exe,linker.exe编译链接MFC程序

由于命令链接它不会主动去找进入的入口,它需要自己书写一个进入的入口,所以在中添加下面这些代码。
在这里插入图片描述
cl.exe编译器将cpp文件编译成obj文件
在这里插入图片描述
cmd中执行cl的命令进行编译,始终存在着一些问题,解决问题后
在这里插入图片描述
结果显示
在这里插入图片描述

三、总结与参考资料

1.总结

MFC相比较于Windows API而言,代码量减少很多;MFC是将Windo-w API封装成类,使用更加方便;在使用命令行工具cl.exe,linker.exe实现编译链接的过程遇到了许多的问题,出现了许多错误,通过查阅资料后得到解决。

2.参考资料

1、MFC的猜数游戏程序.
2、如何在Windows中执行cl.
3、 VS2019实现简单的MFC窗口程序及用cl.exe和link.exe编译链接.

猜你喜欢

转载自blog.csdn.net/QWERTYzxw/article/details/109080487