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

源文件下載:http://files.cnblogs.com/yongfeng/HelloMsg.rar

PDF下載:http://files.cnblogs.com/yongfeng/WINDOWSAPI.rar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM