程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 學習windows編程(2)--環境准備,不用IDE編寫程序

學習windows編程(2)--環境准備,不用IDE編寫程序

編輯:關於C語言


既然是求甚解,那就要脫離掉IDE,保證每個字符都是經過思考產生出來的,其實我們脫離掉IDE環境,更能夠了解到每一步的執行是怎麼樣的,IDE到底在你選擇項目、創建項目的時候為了做了哪些事情,還有一個好處就是,當你想寫一個小的測試程序的時候,你就不用打開VC,而直接用文本編輯器編寫好,直接在命令行中編譯運行就可以看到結果了,節約了不少時間。

下面,我們就來看看怎麼做才可以脫離IDE工作。

1. 在VC6安裝好的前提下,win+R,輸入cmd,在出現的命令行窗口中試下"nmake"命令,如果能執行該命令,那就可以進行下面的操作,否則需要按照步驟2中的操作設置環境變量。如果學習過java的同學,或者使用過linux的同學,應該對這個很熟悉。

2. 在cmd環境下,可以使用echo %path%命令,來顯示一下現在系統中的環境變量路徑。或者,右鍵點擊“我的電腦”,在出現的“屬性”對話框中,選擇“Advanced”Tab頁,在 “Environment Variables”中,“用戶環境變量”裡面找到“path”,點擊修改。

3. 找到你電腦中nmake.exe所在的地方,我電腦中為“d:Program FilesMicrosoft Visual StudioVC98BinNMAKE.EXE”,就將這個路徑加入到path中,因為有可能大家電腦的環境變量中還有Platform SDK和其他版本VS的路徑,所以希望使用哪個,就將哪個放到最前面。
在這個目錄下,你還可以看到有其他的exe程序,有些我們之後也會使用到,比如CL.EXE和LINK.EXE,還有一個VCVARS32.BAT之後我們也會稍微介紹一下。

4. 設置完成後,重新開啟一個cmd,使用echo %path%命令查看剛剛的路徑是否添加上去了,是否是在最前。
再進行步驟1的操作,看看是否可以執行nmake命令。
最終得到的結果為:

1 D:>nmake2 3 Microsoft (R) Program Maintenance Utility   Version 6.00.8168.04 Copyright (C) Microsoft Corp 1988-1998. All rights reserved.5 6 NMAKE : fatal error U1064: MAKEFILE not found and no target specified7 Stop.5. 當設置完NMAKE.EXE成功後,你可以試著執行一下CL.EXE命令,如果報出一個找不到mspdb60.dll,不用慌張,那是因為還有一個路徑沒有設置。
在電腦中尋找mspdb60.dll文件,我的電腦中路徑為“d:Program FilesMicrosoft Visual StudioCommonMSDev98BinMSPDB60.DLL”,從路徑名稱可以看到,這應該是屬於Dev環境的一個公共文件,這裡我們不管它具體的,直接將路徑加入path中,剛剛加入的路徑之後,兩個路徑之間記得用英文字符的分號(;)分隔開來。

6. 同樣,設置path,重啟cmd窗口,echo查看下設置是否成功,然後執行cl,link命令。
結果如下:

1 D:>cl2 Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x863 Copyright (C) Microsoft Corp 1984-1998. All rights reserved.4 5 usage: cl [ option... ] filename... [ /link linkoption... ]link
 1 D:>link 2 Microsoft (R) Incremental Linker Version 6.00.8168 3 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. 4  5 usage: LINK [options] [files] [@commandfile] 6  7    options: 8  9       /ALIGN:#10       /BASE:{address|@filename,key}11       /COMMENT:comment12       /DEBUG13       /DEBUGTYPE:{CV|COFF}14       /DEF:filename15       /DEFAULTLIB:library16       /DELAY:{NOBIND|UNLOAD}17       /DELAYLOAD:dll18       /DLL19       /DRIVER[:{UPONLY|WDM}]20       /ENTRY:symbol21       /EXETYPE:DYNAMIC22       /EXPORT:symbol23       /FIXED[:NO]24       /FORCE[:{MULTIPLE|UNRESOLVED}]25       /GPSIZE:#26       /HEAP:reserve[,commit]27       /IMPLIB:filename28       /INCLUDE:symbol29       /INCREMENTAL:{YES|NO}30       /LARGEADDRESSAWARE[:NO]31       /LIBPATH:dir32       /LINK50COMPAT33       /MACHINE:{ALPHA|ARM|IX86|MIPS|MIPS16|MIPSR41XX|PPC|SH3|SH4}34       /MAP[:filename]35       /MAPINFO:{EXPORTS|FIXUPS|LINES}36       /MERGE:from=to37       /NODEFAULTLIB[:library]38       /NOENTRY39       /NOLOGO40       /OPT:{ICF[,iterations]|NOICF|NOREF|NOWIN98|REF|WIN98}41       /ORDER:@filename42       /OUT:filename43       /PDB:{filename|NONE}44       /PDBTYPE:{CON[SOLIDATE]|SEPT[YPES]}45       /PROFILE46       /RELEASE47       /SECTION:name,[E][R][W][S][D][K][L][P][X]48       /STACK:reserve[,commit]49       /STUB:filename50       /SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]]51       /SWAPRUN:{CD|NET}52       /VERBOSE[:LIB]53       /VERSION:#[.#]54       /VXD55       /WARN[:warninglevel]56       /WINDOWSCE:{CONVERT|EMULATION}57       /WS:AGGRESSIVE到這裡,我們的環境設置算是完成了一半,基本能夠應付不需要使用到某些特定庫和頭文件的情況,至於使用到庫和頭文件的情況,還是等我們具體遇到的時候再進行相應的設置可以記得更清楚,這裡做個小例子,來看看咱們設置得對不對,照舊例,還是hello world.

隨便進入某個目錄,創建一個hello.c
內容很簡單,printf一串字符吧。

用你最喜愛的文本編輯器寫下下面的代碼:

1 #include <stdio.h>2 3  int main()4 {5     printf("abcdefg. ");6     return 0;7 }然後進入命令行,在命令行中進入代碼所在的目錄,我這裡是d: est
全部執行過程如下:

 1 D:>cd test 2  3 D: est>cl hello.c 4 Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86 5 Copyright (C) Microsoft Corp 1984-1998. All rights reserved. 6  7 hello.c 8 Microsoft (R) Incremental Linker Version 6.00.8168 9 Copyright (C) Microsoft Corp 1992-1998. All rights reserved.10 11  /out:hello.exe12 hello.obj13 14 D: est>hello.exe15 abcdefg.可以看到cl hello.c就編譯出來了hello.exe,執行hello.exe得到輸出。 So easy是不是?
But這裡提幾個問題,看看你能不能回答出來。

1. 這裡是hello.c,如果是hello.cpp,cl的行為有沒有不同?

2. 如果是兩個或多個文件,那使用cl是否可以直接編譯出來exe文件?

3. 將入口修改為void main()是否可以,或者void start()呢?

4. stdio.h大家都知道是C的標准庫內容,windows是如何將它合入到系統中去的呢?

5. 同樣,stdio.h只是頭文件,而具體函數實現是在lib庫中,windows又是如何將其合到exe文件中的呢?

6. 剛剛我們打印的是英文字符,那如果我們要打入中文"你好,世界",結果會怎樣,到底是為什麼呢?

這其實也是我的疑惑,也是下一篇文章要討論的內容,暫定題為"hello.c的疑問",我努力解答。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved