目录

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 ;
}

分析:

  1. windows.h头文件需要包含
  2. 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
  1. 代码运行示例

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

  1. Microsoft SDKs→Windows→V6.0A→bin、include、lib

微软软件开发工具包(SDK),它提供文档的链接,代码示例,工具,标题,库,和其他文件,开发人员可以使用它来创建软件应用程序和库。

Microsoft Visual Studio 9.0

  1. Microsoft Visual Studio 9.0→VC→Bin(内有NAMKE,CL编译器和LINK链接器)、Include、lib
  1. Microsoft Visual Studio 9.0→Common7→IDE(msobj80.dll,mspdb80.dll,mspdbcore.dll,mspdbsrv,生成*.obj、*.pdb,如图1)

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编译相关推荐

  1. 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 ...

  2. MFC程序解析以及使用cl.exe、link.exe编译连接Windows API和MFC程序

    目录 一.实验目的 二.实验配置 三.MFC程序创建和解析 (一).创建MFC程序 (二).分析MFC程序 四.使用cl.exe和link.exe (一).Windows API 1.实验代码 2.实 ...

  3. windows环境中利用NMake工具编译连接C++源代码

    这篇文章是上一篇文章(http://www.cnblogs.com/LCCRNblog/p/4532643.html)的补充,因此需要先看看上一篇文章. 最近在写代码的时候,需要通过命令的方式来执行生 ...

  4. c运行库、c标准库、windows API的区别和联系

    c运行库.c标准库.windows API的区别和联系 C运行时库函数 C运行时库函数是指C语言本身支持的一些基本函数,通常是汇编直接实现的.    API函数 API函数是操作系统为方便用户设计应用 ...

  5. C++ WINDOWS API 第2章 Windows API概要

    目录 2.1       Windows数据类型.. 1 2.1.1       Windows数据类型示例.. 1 2.1.2       Windows 数据类型与标准C 数据类型的关系.. 5 ...

  6. C#中调用Windows API时的数据类型对应关系

    C#中调用Windows API时的数据类型对应关系 原文 C#中调用Windows API时的数据类型对应关系 BOOL=System.Int32 BOOLEAN=System.Int32 BYTE ...

  7. C#调用windows api的要点

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...

  8. C#中调用Windows API的要点

    在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的.本文将C#中调用API的要点汇集如下,希 ...

  9. 用C#调用Windows API向指定窗口发送按键消息

    为什么80%的码农都做不了架构师?>>>    用C#调用Windows API向指定窗口发送 一.调用Windows API. C#下调用Windows API方法如下: 1.引入 ...

最新文章

  1. RMAN备份与ORA-19625ORA-19502
  2. 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
  3. SpringBoot 2.0 教程实战 MySQL 读写分离
  4. Python中zip()函数的解释和可视化
  5. Guice 1.0 用户指南
  6. 某中学要对学校运动会进行计算机管理,2020年新编高职入学考试适应性试卷信息技术试卷定稿名师精品资料....
  7. Blah数集(信息学奥赛一本通-T1333)
  8. [WCF]相关资料整理
  9. OLAP引擎——Kylin介绍
  10. 英文翻译软件哪个好?不能错过的有这几个。
  11. 西安电子科技大学计算机本校好考吗,西安电子科技大学:除了计算机和通信工程,这些专业高考也很热门...
  12. python爬虫之使用urllib模块实现有道翻译功能
  13. 反馈抑制器设计的技术要点
  14. 通过ajax单独上传图片
  15. Codeforces GYM 100962J: Jimi Hendrix 题解
  16. AD PCB布板提示The following exception occurred whilst loading section primitive paramenters...解决方法
  17. Java基础_面向对象,Lambda 表达式
  18. python 按键精灵 离线_(番外篇)Python操纵网盘客户端批量离线下载电影
  19. 微软project服务器搭建,安装和配置 Project Server 2013
  20. MFC CString 长度取得

热门文章

  1. 元宇宙iwemeta: 元宇宙与数字经济
  2. 机器学习入门系列一(关键词:单变量线性回归,梯度下降法)
  3. 稀疏自编码器符号一览表
  4. Slack:日活跃用户50万人、6周增幅35%造就奇迹
  5. Docker Review - dockerfile 入门篇
  6. Docker Review - Docker 概念 入门篇
  7. 每日一博 - 常见的Spring事务失效事务不回滚案例集锦
  8. html限制最多字符串,css – 设置字符串换行中允许的最大换行量
  9. android 看AP 国家代码,Android WiFi 获取国家码
  10. android列表时间轴,Android实现列表时间轴