Dos下運行VC++ console程序的環境設置

注:摘錄侯俊傑--在 console mode 中使用 C/C++ 編譯器

●C/C++ 編譯器需要的環境變數設定

古早以來,PC 上的 C 編譯器,就需要兩個環境變數:

LIB:這個環境變數告訴編譯器說,必要的 libraries 在哪裏(哪個磁碟目錄下)
INCLUDE:告訴編譯器說,必要的 header files 在哪裏(哪個磁碟目錄下)

另外,爲了讓我們能夠在任何 working directory 都叫得到編譯器,當然我們必須設定 PATH。

從古早以來,一直到現在,C/C++ 編譯器都需要這三個環境變數。


●以 Visual C++ 爲例

以 Visual C++ 爲例,如果安裝後的檔案佈局如下:

C:/MSDEV/VC98/BIN : 這裏放有編譯器 CL.EXE
C:/MSDEV/VC98/INCLUDE : 這裏放有 C/C++ header files
C:/MSDEV/VC98/LIB : 這裏放有 C/C++ standard libraries

那麼你可以寫一個批次檔如下:

set PATH=C:/MSDEV/VC98/BIN;C:/MSDEV/COMMON/MSDEV98/BIN
set INCLUDE=C:/MSDEV/VC98/INCLUDE
set LIB=C:/MSDEV/VC98/LIB

之所以需要另外設定 PATH=C:/MSDEV/COMMON/MSDEV98/BIN,是因爲編譯器 CL.EXE 執行時需要 MSPDB60.DLL,而它被安裝於 C:/MSDEV/COMMON/MSDEV98/BIN 之中。

如果你寫的程式不只是單純的 C/C++ 程式,還用到了 MFC,一樣可以在 console mode 下編譯,這時候你的環境變數應該如此設定:

set PATH=C:/MSDEV/VC98/BIN;C:/MSDEV/COMMON/MSDEV98/BIN
set INCLUDE=C:/MSDEV/VC98/INCLUDE;C:/MSDEV/VC98/MFC/INCLUDE
set LIB=C:/MSDEV/VC98/LIB;C:/MSDEV/VC98/MFC/LIB

多指定了 MFC/INCLUDE 和 MFC/LIB,就可以讓編譯器和聯結器找到 MFC 的 header files 和 libraries。如果你還需要用到 ATL,就得在 INCLUDE 環境變數中再加上 C:/MSDEV/VC98/ATL/INCLUDE。

=========================================

我的VC++安裝在D:/Program Files/Microsoft Visual Studio下,所以改寫批次檔如下:

set PATH=D:/Program Files/Microsoft Visual Studio/VC98/Bin;D:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin
set INCLUDE=D:/Program Files/Microsoft Visual Studio/VC98/Include;D:/Program Files/Microsoft Visual Studio/VC98/MFC/Include
set LIB=D:/Program Files/Microsoft Visual Studio/VC98/Lib;D:/Program Files/Microsoft Visual Studio/VC98/MFC/Lib

然後運行cmd,將以上設置複製粘貼到鼠標閃爍處。如果想要確認路徑更改正確,可以鍵入set命令查看。

注:這樣的環境變量修改,僅對本次命令行窗口有效,因爲它是一個虛擬設備。如果想要每次進入時,不做這個工作。可以運行VCVARS32.BAT然後設置你的環境變量。爲了不影響VC++的原本設置方便集成環境的使用,我並沒有實際操作,一個簡單的複製粘貼也不見得麻煩。另外還可以在我的電腦-屬性-高級-環境變量裏直接修改,這個修改也是永久性的。到這裏,路徑就設置好了。下面試操作一下:

我在F:/盤保存了一個test.cpp文件作爲測試文件。文件內容如下:

=======================================
#include <iostream.h>
void main()
{
 cout<<"hello"<<endl;
}
=========================================

使用cd命令把當前命令行窗口路徑切換到F:/>,然後執行cl test.cpp命令,在F:/盤路徑下生成了兩個文件,test.obj和test.exe。然後再運行test.exe,就可以看到結果了(輸出hello)。

 

自己另外的體會:在使用Dos下編譯win32程序(且調用GUI)時,因爲涉及到.rc資源文件的編譯,所以需要在編譯cpp文件之前,先鍵入以下代碼,對.rc類型文件進行編譯生成res類型文件:

rc bmp.rc

可能是因爲調用了window API(又或者是調用了GUI,這一點我任然沒有搞清楚,這裏只是我個人的不完整想法,我會盡力去找到答案的!反正只要是和生成窗口有關的程序),在對cpp文件編譯時需要改成以下格式(如果利用了.rc類型文件的):

cl bmp.cpp bmp.res user32.lib gdi32.lib

其中user32.lib和gdi32.lib是windows三大模塊的其中兩個,爲什麼只調用這兩個還有待探究。

 

  不知道大家有沒有同感,在看電子書上的一些小范例的時候,它只是提供了.cpp文件,.h文件以及一些資源文件。每次想要執行試試看的時候,都要重新創建工程,比較麻煩!(以前我就是這麼傻傻的做的)如果在DOS下編譯,就不會這麼麻煩了!

 

  溫馨提示:對於小程序比較好,大點的話就比較麻煩咯!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章