C++ WINDOWS API 如何使用NMAKE和CL编译
目录
1 简单的Windows API代码示例... 1
2 安装环境与分析... 1
3 设置为当前DOS窗口环境系统变量... 2
配置信息... 2
设置信息... 3
4 运行效果... 3
设置系统环境变量信息... 3
NMAKE编译... 3
CL编译... 5
5 小结... 5
1 简单的Windows API代码示例
/*--------------------------------------------------------------HelloMsg.c -- Displays "Hello, Windows 98!" in a message box (c) Charles Petzold, 1998 --------------------------------------------------------------*/ #include <windows.h> int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0) ; return 0 ; }
分析:
- windows.h头文件需要包含
- messagebox 需要包含windows api,需要user32.lib,在C:\WINDOWS\system32,其中包含了ulib.dll、user32.lib、kernel32.dll等。
编译时,系统自动寻找user32.lib,代码需要以下写法:
#include <windows.h> #pragma comment(lib,"user32.lib")
编译时,手动添加,则编译时需要以下写法:
cl hellomsg.c user32.lib
- 代码运行示例
NMAKE运行:
nmake hellomsg.mak
CL运行:
cl hellomsg.c user32.lib
2 安装环境与分析
不安装Microsoft Platform SDK,因为安装VS2008专业版本(非EXPRESS版本的)已经包含了Microsoft Platform SDK与编译器,因不使用Microsoft Platform SDK都可以编译C或C++。
安装的VS2008专业版中,C:\Program Files,其中包含了2个文件:
文件名称 |
文件夹内容 |
Microsoft SDKs |
|
微软软件开发工具包(SDK),它提供文档的链接,代码示例,工具,标题,库,和其他文件,开发人员可以使用它来创建软件应用程序和库。 |
|
Microsoft Visual Studio 9.0 |
|
Visual Studio 是微软公司推出的开发环境 |
图1
3 设置为当前DOS窗口环境系统变量
3.1配置信息
需要用DOS窗口编译(如果安装了Microsoft Platform SDK,根据以下配置信息即可更简单编译):
路径 |
文件内容 |
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin |
|
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include |
包含windows.h头文件 |
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib |
编译时需要的SDK的LIB |
C:\Program Files\Microsoft Visual Studio 9.0\VC\bin |
|
C:\Program Files\Microsoft Visual Studio 9.0\VC\include |
|
C:\Program Files\Microsoft Visual Studio 9.0\VC\lib |
|
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE |
生成*.obj、*.pdb |
3.2设置信息
在DOS窗口运行(在当前窗口,环境系统变量有效;当然也可以通过我的电脑属性值固定它,这里暂不固定):
set path=%ProgramFiles%\Microsoft SDKs\Windows\v6.0A\bin;%ProgramFiles%\Microsoft Visual Studio 9.0\VC\bin;%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE; set include=%ProgramFiles%\Microsoft SDKs\Windows\v6.0A\Include;%ProgramFiles%\Microsoft Visual Studio 9.0\VC\include; set lib=%ProgramFiles%\Microsoft SDKs\Windows\v6.0A\Lib;%ProgramFiles%\Microsoft Visual Studio 9.0\VC\lib;
4 运行效果
4.1设置系统环境变量信息
G:\>set path=C:\WINDOWS\system32;C:\Program Files\Microsoft SDKs\Windows\v6.0A\b in;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin;C:\Program Files\Microsof t Visual Studio 9.0\Common7\IDE; G:\>set include=C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include;C:\Program Files\Microsoft Visual Studio 9.0\VC\include; G:\>set lib=C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib;C:\Program Files\M icrosoft Visual Studio 9.0\VC\lib;
4.2NMAKE编译
G:\>nmake hellomsg.mak Microsoft (R) 程序维护实用工具 9.00.21022.08 版 版权所有 (C) Microsoft Corporation。保留所有权利。 No configuration specified. Defaulting to HelloMsg - Win32 Debug. Warning: cannot find "HelloMsg.dep" if not exist ".\Debug/" mkdir ".\Debug" cl.exe @C:\DOCUME~1\ZHYONG~1\LOCALS~1\Temp\nmB1.tmp cl: 命令行 warning D9035 :“GX”选项已否决,并将在将来的版本中移除 cl: 命令行 warning D9036 :使用“EHsc”而不使用“GX” cl: 命令行 warning D9002 :忽略未知选项“/MLd” cl: 命令行 warning D9002 :忽略未知选项“/YX” HelloMsg.c link.exe @C:\DOCUME~1\ZHYONG~1\LOCALS~1\Temp\nmB2.tmp LINK : warning LNK4044: 无法识别的选项“/pdbtype:sept”;已忽略 G:\>
(因为这里是直接从VS2008 HelloMsg的MakeFile文件直接Copy过来的,所以会出现一些关于在VS2008 运行的waring信息,MakeFile文件大家可以自己写)
打开Debug调试运行HelloMsg:
4.3 CL编译
G:\>cl hellomsg.c user32.lib 用于 80x86 的 Microsoft (R) 32 位 C/C++ 优化编译器 15.00.21022.08 版 版权所有(C) Microsoft Corporation。保留所有权利。 hellomsg.c Microsoft (R) Incremental Linker Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. /out:hellomsg.exe hellomsg.obj user32.lib
5 小结
源文件下载:http://files.cnblogs.com/yongfeng/HelloMsg.rar
PDF下载:http://files.cnblogs.com/yongfeng/WINDOWSAPI.rar
from: http://www.cnblogs.com/yongfeng/archive/2013/04/26/3044434.html
C++ WINDOWS API 如何使用NMAKE和CL编译相关推荐
- C++ WINDOWS API 第1章 Windows 应用程序开发入门
目录 1.1 第一个实例程序.. 1 1.1.1 start.exe. 1 1.1.2 Windows API 2 1.1.3 程序入口函数.. 2 1 ...
- MFC程序解析以及使用cl.exe、link.exe编译连接Windows API和MFC程序
目录 一.实验目的 二.实验配置 三.MFC程序创建和解析 (一).创建MFC程序 (二).分析MFC程序 四.使用cl.exe和link.exe (一).Windows API 1.实验代码 2.实 ...
- windows环境中利用NMake工具编译连接C++源代码
这篇文章是上一篇文章(http://www.cnblogs.com/LCCRNblog/p/4532643.html)的补充,因此需要先看看上一篇文章. 最近在写代码的时候,需要通过命令的方式来执行生 ...
- c运行库、c标准库、windows API的区别和联系
c运行库.c标准库.windows API的区别和联系 C运行时库函数 C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的. API函数 API函数是操作系统为方便用户设计应用 ...
- C++ WINDOWS API 第2章 Windows API概要
目录 2.1 Windows数据类型.. 1 2.1.1 Windows数据类型示例.. 1 2.1.2 Windows 数据类型与标准C 数据类型的关系.. 5 ...
- C#中调用Windows API时的数据类型对应关系
C#中调用Windows API时的数据类型对应关系 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE ...
- C#调用windows api的要点
在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...
- C#中调用Windows API的要点
在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...
- 用C#调用Windows API向指定窗口发送按键消息
为什么80%的码农都做不了架构师?>>> 用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入 ...
最新文章
- RMAN备份与ORA-19625ORA-19502
- 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
- SpringBoot 2.0 教程实战 MySQL 读写分离
- Python中zip()函数的解释和可视化
- Guice 1.0 用户指南
- 某中学要对学校运动会进行计算机管理,2020年新编高职入学考试适应性试卷信息技术试卷定稿名师精品资料....
- Blah数集(信息学奥赛一本通-T1333)
- [WCF]相关资料整理
- OLAP引擎——Kylin介绍
- 英文翻译软件哪个好?不能错过的有这几个。
- 西安电子科技大学计算机本校好考吗,西安电子科技大学:除了计算机和通信工程,这些专业高考也很热门...
- python爬虫之使用urllib模块实现有道翻译功能
- 反馈抑制器设计的技术要点
- 通过ajax单独上传图片
- Codeforces GYM 100962J: Jimi Hendrix 题解
- AD PCB布板提示The following exception occurred whilst loading section primitive paramenters...解决方法
- Java基础_面向对象,Lambda 表达式
- python 按键精灵 离线_(番外篇)Python操纵网盘客户端批量离线下载电影
- 微软project服务器搭建,安装和配置 Project Server 2013
- MFC CString 长度取得
热门文章
- 元宇宙iwemeta: 元宇宙与数字经济
- 机器学习入门系列一(关键词:单变量线性回归,梯度下降法)
- 稀疏自编码器符号一览表
- Slack:日活跃用户50万人、6周增幅35%造就奇迹
- Docker Review - dockerfile 入门篇
- Docker Review - Docker 概念 入门篇
- 每日一博 - 常见的Spring事务失效事务不回滚案例集锦
- html限制最多字符串,css – 设置字符串换行中允许的最大换行量
- android 看AP 国家代码,Android WiFi 获取国家码
- android列表时间轴,Android实现列表时间轴