国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在命令行鍵入“cl”時出現不是內部或外部命令,也不是可運行的程序或批處理文件的問題。

2019-11-08 01:53:18
字體:
來源:轉載
供稿:網友

本人采用Visual Studio 2010編譯器編譯代碼,根據書上給出命令測試,結果出現“在命令行鍵入“cl”時出現不是內部或外部命令,也不是可運行的程序或批處理文件的問題。”百度后得到解決方法并且有所拓展。

在windows操作系統中,打開命令行,輸入cl,若系統提示

'cl' 不是內部或外部命令,也不是可運行的程序或批處理文件。

則說明VS沒有安裝或者環境變量設置不正確,可以按照如下步驟設置:1. 確保已經安裝VS,并在控制臺 中鍵入set    檢查是否有類似如下格式的環境變量VSXXCOMNTOOLS

VS90COMNTOOLS=D:/PRogram Files/Microsoft Visual Studio 9.0/Common7/Tools/

    其中XX與VS版本有關:    a) VS2003對應 VS71COMNTOOLS    b) VS2005對應VS80COMNTOOLS    c) VS2008對應VS90COMNTOOLS

    如果沒有則執行步驟2;否則執行步驟3

2. 在我的電腦>屬性>高級>環境變量>系統變量 中新建一個環靜變量    變量名: VSXXCOMNTOOLS    變量值: VS安裝目錄/Common7/Tools/    重復執行步驟1

3. 在控制臺中鍵入

    >call "%VS90COMNTOOLS%"vsvars32.bat     <==設置cl運行時的一些環境變量    >cl

    確保沒有提示出錯;否則重復步驟1

注意:用set設置環境變量,只能保證在本命令行中生效,命令行窗口一旦關閉,設置就失效了。要想設置也作用于其他命令行窗口,通過我的電腦->環境變量來設置

cl使用簡介cl有很多選項,請通過cl /?獲取完整列表。這里列出了一些最重要的選項(選項的前綴可以是'-'或'/'),并且有例子。

              無選項>cl foo.c bar.c                   <==編譯出foo.obj,bar.obj并自動調用鏈接器link鏈接得到foo.exe

/c            只編譯不鏈接>cl /c foo.c bar.c                <==編譯出foo.obj,bar.obj,但不調用鏈接器

/link <lib>   指定要鏈接的Library>cl /link kernel32.lib foo.c      <==編譯出foo.obj,并鏈接kernel32.lib,得到foo.exe

/I <dir>      把目錄加入include搜錄路徑中

/D<name>{=|#}<text> 定義預處理器>cl /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE <==定義2個預處理器

cl常用選項/c                            只編譯不鏈接/O2                           設定速度最優化/W3                           設定警告等級3

cl相關解釋關于CRT的更多解釋如何禁止警告4996

 

/D_CRT_SECURE_NO_DEPRECATE    關閉warning:4996(表示strcpy不安全的warning等)/D_CRT_NONSTDC_NO_DEPRECATE   非標準C也關閉warning:4996/MD                           更多關于CRT的解釋

link使用簡介link有很多選項,完整列表見http://msdn.microsoft.com/zh-tw/library/y0zzbyt4.aspx,下面僅列出一些常用選項

[/debug] 產生調試信息link /out:main.exe main.obj              <==鏈接main.obj并生成main.exe

[/pdb:<target>] 產生調試符號文件link /debug /out:main.exe main.obj       <==鏈接main.obj并生成帶有調試信息的main.exe

[/out:<target>] 指定輸出文件link /debug /pdb:main.pdb /out:main.exe main.obj     <==鏈接main.obj并生成帶有調試信息的main.exe以及調試符號文件main.pdb

[/subsystem:<target>] 指定子系統http://msdn.microsoft.com/zh-cn/library/fcc1zstk.aspxlink /subsystem:windows /out:main.exe main.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib     <== 編譯windows程序,入口函數自動設為WinMain,其中kernel32.lib,...,odbccp32.lib等為windows程序必須鏈接的lib

[/libpath:<dir>] 把目錄加入lib搜索路徑中。如果有多個路徑,則要寫多次/libpathlink /libpath:../common /out:main.exe main.obj lua.lib          <== 鏈接../common中的lua.lib

值得注意的是:如果同時提供main和WinMain,那么必須手工指定/subsystem如果只提供main,則鏈接器自動指定/subsystem:console

應用實例通常我們把cl和link分開使用:下面是編譯lua的一段腳本

cl /MD /O2 /W3 /c /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DLUA_BUILD_AS_DLL l*.cdel lua.obj luac.obj <==上述cl編譯所有的l*.c,而lua.obj和luac.obj是不需要link的,所以刪除之link /DLL /out:lua51.dll l*.obj

轉自:windows 控制臺下運行cl命令


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马鞍山市| 双牌县| 同江市| 兰州市| 山阴县| 汉川市| 大庆市| 和平区| 杭锦后旗| 工布江达县| 磐石市| 米脂县| 汉阴县| 余江县| 攀枝花市| 酉阳| 定襄县| 光山县| 陆良县| 石柱| 胶南市| 全南县| 乌兰浩特市| 怀宁县| 海淀区| 两当县| 莱州市| 会理县| 调兵山市| 乌鲁木齐县| 阿克陶县| 信阳市| 兴海县| 于都县| 青龙| 岳普湖县| 大荔县| 咸丰县| 抚州市| 抚宁县| 尉犁县|