C++ WINDOWS API 如何使用NMAKE和CL编译
目錄
1?????? 簡(jiǎn)單的Windows API代碼示例... 1
2?????? 安裝環(huán)境與分析... 1
3?????? 設(shè)置為當(dāng)前DOS窗口環(huán)境系統(tǒng)變量... 2
配置信息... 2
設(shè)置信息... 3
4?????? 運(yùn)行效果... 3
設(shè)置系統(tǒng)環(huán)境變量信息... 3
NMAKE編譯... 3
CL編譯... 5
5?????? 小結(jié)... 5
?
?
?
?
1?????? 簡(jiǎn)單的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 ; }分析:
編譯時(shí),系統(tǒng)自動(dòng)尋找user32.lib,代碼需要以下寫法:
#include <windows.h> #pragma comment(lib,"user32.lib")編譯時(shí),手動(dòng)添加,則編譯時(shí)需要以下寫法:
cl hellomsg.c user32.libNMAKE運(yùn)行:
nmake hellomsg.makCL運(yùn)行:
cl hellomsg.c user32.lib?
2?????? 安裝環(huán)境與分析
不安裝Microsoft Platform SDK,因?yàn)榘惭bVS2008專業(yè)版本(非EXPRESS版本的)已經(jīng)包含了Microsoft Platform SDK與編譯器,因不使用Microsoft Platform SDK都可以編譯C或C++。
安裝的VS2008專業(yè)版中,C:\Program Files,其中包含了2個(gè)文件:
| 文件名稱 | 文件夾內(nèi)容 |
| Microsoft SDKs | |
| 微軟軟件開發(fā)工具包(SDK),它提供文檔的鏈接,代碼示例,工具,標(biāo)題,庫(kù),和其他文件,開發(fā)人員可以使用它來創(chuàng)建軟件應(yīng)用程序和庫(kù)。 | |
| Microsoft Visual Studio 9.0 | ? |
| Visual Studio 是微軟公司推出的開發(fā)環(huán)境 | |
?
圖1
3?????? 設(shè)置為當(dāng)前DOS窗口環(huán)境系統(tǒng)變量
3.1配置信息
需要用DOS窗口編譯(如果安裝了Microsoft Platform SDK,根據(jù)以下配置信息即可更簡(jiǎn)單編譯):
| 路徑 | 文件內(nèi)容 |
| 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 | 編譯時(shí)需要的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設(shè)置信息
在DOS窗口運(yùn)行(在當(dāng)前窗口,環(huán)境系統(tǒng)變量有效;當(dāng)然也可以通過我的電腦屬性值固定它,這里暫不固定):
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?????? 運(yùn)行效果
4.1設(shè)置系統(tǒng)環(huán)境變量信息
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) 程序維護(hù)實(shí)用工具 9.00.21022.08 版 版權(quán)所有 (C) Microsoft Corporation。保留所有權(quán)利。 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”選項(xiàng)已否決,并將在將來的版本中移除 cl: 命令行 warning D9036 :使用“EHsc”而不使用“GX” cl: 命令行 warning D9002 :忽略未知選項(xiàng)“/MLd” cl: 命令行 warning D9002 :忽略未知選項(xiàng)“/YX” HelloMsg.c link.exe @C:\DOCUME~1\ZHYONG~1\LOCALS~1\Temp\nmB2.tmp LINK : warning LNK4044: 無法識(shí)別的選項(xiàng)“/pdbtype:sept”;已忽略 G:\>?
(因?yàn)檫@里是直接從VS2008 HelloMsg的MakeFile文件直接Copy過來的,所以會(huì)出現(xiàn)一些關(guān)于在VS2008 運(yùn)行的waring信息,MakeFile文件大家可以自己寫)
打開Debug調(diào)試運(yùn)行HelloMsg:
?
4.3 CL編譯
G:\>cl hellomsg.c user32.lib 用于 80x86 的 Microsoft (R) 32 位 C/C++ 優(yōu)化編譯器 15.00.21022.08 版 版權(quán)所有(C) Microsoft Corporation。保留所有權(quán)利。 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?????? 小結(jié)
源文件下載: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
總結(jié)
以上是生活随笔為你收集整理的C++ WINDOWS API 如何使用NMAKE和CL编译的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse配置Struts2、Hib
- 下一篇: c++编程 文件系统