zoukankan      html  css  js  c++  java
  • 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 ;
    }

    分析:

    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       小结

    源文件下载:https://files.cnblogs.com/yongfeng/HelloMsg.rar

    PDF下载:https://files.cnblogs.com/yongfeng/WINDOWSAPI.rar

    Top
    关注
    评论

    博文分享:



    许可协议:

    Creative Commons License

    本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系

  • 相关阅读:
    pat甲级 1155 Heap Paths (30 分)
    pat甲级 1152 Google Recruitment (20 分)
    蓝桥杯 基础练习 特殊回文数
    蓝桥杯 基础练习 十进制转十六进制
    蓝桥杯 基础练习 十六进制转十进制
    蓝桥杯 基础练习 十六进制转八进制
    51nod 1347 旋转字符串
    蓝桥杯 入门训练 圆的面积
    蓝桥杯 入门训练 Fibonacci数列
    链表相关
  • 原文地址:https://www.cnblogs.com/yongfeng/p/3044434.html
Copyright © 2011-2022 走看看