天天看點

在指令行界面使用vs2008的cl 進行編譯

【背景】

Win7+vs2008。若安裝了vc6則一般不存在上述問題。

此處假設vs2008安裝路徑為D:\Microsoft Visual Studio 9.0

【問題與解決方法】

1. “cl不是可用的内部指令或可執行程式”

----原因:環境變量Path沒有設定好。

----解決:在環境變量Path中添加VC的bin目錄。Path= D:\Microsoft Visual Studio 9.0\VC\bin。在D:\Microsoft Visual Studio 9.0\VC\ce\bin下還有其他一些編譯器,看名字是交叉編譯用的

2.“mspdb80.dll無法找到”

----原因:vs2008的VC\bin目錄下缺少msobj80.dll、mspdb80.dll、mspdbcore.dll、mspdbsrv.exe這四個檔案。

----解決:在D:\Microsoft Visual Studio 9.0\Common7\IDE下複制這四個檔案到VC\bin。

3.解決以上問題以後,可以直接在指令行的任何目錄下編譯C/C++檔案了。可是又出現新狀況:

“fatal error: cannot open include file”

----原因:vs2008未設定include和lib的環境變量。

----解決:

3.1在環境變量裡添加變量INCLUDE,包含進VC\Include和C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include(這個是安裝vs時自動安裝在C槽的)兩個目錄

INCLUDE=D:\Microsoft Visual Studio 9.0\VC\include; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include

3.2添加變量LIB,包含進VC\lib和C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib(這個也是安裝vs時自動安裝在C槽的)兩個目錄:

LIB=D:\Microsoft Visual Studio 9.0\VC\lib; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib

4.提示:fatal error LNK1104: 無法打開檔案“kernel32.lib”,(在IDE裡面運作沒有問題,因為IDE中采用了另外的封裝了庫)

----解決:在環境變量裡添加變量LIB,C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib

或者将kernel32.lib直接copy到vc的lib目錄下也可以

至此,問題終于解決了,hoho~o(∩_∩)o...

【Tips】

1.使用-GX選項時,2005的編譯器會提示GX已過時,使用-EHsc代替

cl : Command line warning D9035 : option 'GX' has been deprecated and will be re

moved in a future release

cl : Command line warning D9036 : use 'EHsc' instead of 'GX'

2.環境變量可以通過“我的電腦右鍵->進階->環境變量”設定。當然也有其它方法,欲知詳情請百度之。