| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4931 人关注过本帖, 3 人收藏
标题:如何使用Visual Studio命令行環境編譯和運行程序
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
结帖率:100%
收藏(3)
 问题点数:0 回复次数:5 
如何使用Visual Studio命令行環境編譯和運行程序
這裡以Visual Studio 2015為例,講解如何使用命令行編譯和運行C/C++程序。實際上,任何C/C++編譯器,均是命令行編譯器,並不必定要使用IDE的,在IDE中執行編譯過程,也是啟動命令行進程,祗不過把輸出呈現在IDE中的一個窗口罷了。

首先正常安裝Visual Studio開發包,安裝組件視需求而定,可選擇僅安裝C/C++編程語言。安裝之後,點開【開始】菜單,找到Visual Studio分組項目,會看到如下左面的畫面(以Windows 10為例),其中有一項為【VS2015開發人員命令提示】,點擊它即會啟動一個控制臺窗口(俗稱CMD窗口,CMD是Command的縮寫),如下右上畫面。這個窗口就是我們後面進行開發的工作平臺。為方便,可以把這個項目放置在桌面或磁貼上,見右下畫面。

图片附件: 游客没有浏览图片的权限,请 登录注册


實際上,這是一個“快捷方式”,它不過是在開啟一個cmd窗口的同時運行了一段環境設置指令,是一個名為VsDevCmd.bat的批處理程序(位於"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools"文件夾中)。我們也可以自己用【運行】啟動一個cmd窗口,然後在需要時運行這個批處理程序,也是一樣的。
收到的鲜花
  • hjx11202015-10-05 20:28 送鲜花  49朵   附言:点32个赞
搜索更多相关主题的帖子: Windows 如何 
2015-10-05 12:52
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
具体怎么使用命令行编辑,编译,调试程序?

一片落叶掉进了回忆的流年。
2015-10-05 13:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
通常我們寫程序,都會在一個專用的文件夾中進行,以方便管理。下面的指令在磁盤D:的根目錄上創建一個名為test的文件夾,然後把“當前目錄”(Current Directory)轉到其中:
图片附件: 游客没有浏览图片的权限,请 登录注册


在這個目錄中,用任何文本文件編輯器,比如記事本,編寫一個C/C++程序並存盤,如下圖:
图片附件: 游客没有浏览图片的权限,请 登录注册


編譯這個程序:
图片附件: 游客没有浏览图片的权限,请 登录注册

編譯參數/MD是告訴編譯器,生成的程序與msvcrt.lib鏈接,這相當於是release版本,生成的可執行程序是不帶調試信息的,無法使用Debugger調試器對這樣的程序進行跟蹤和調試。如果要使用debug版本,則參數為/MDd。留意這個畫面,我們雖然鍵入的指令是啟動cl編譯程序,但事實上,它運行了兩個程序,前面針對hello.c的部分,叫“編譯”(Compile,所謂的編譯器,實際上僅僅是這個Compiler),這是把hello.c源代碼文件編譯為目標代碼文件hello.obj的,後者用於後續的鏈接過程;後面的部分,就是“鏈接”(Link,其程序叫鏈接器Linker,可以單獨啟動,即可以僅編譯不鏈接,也可以僅鏈接不編譯),正如我們所看到的,由於我們鍵入編譯指令時沒有指定可執行程序文件的名稱,所以編譯器默認輸出為hello.exe,此處使用的鏈接輸入文件就是前面編譯部分的輸出hello.obj。hello.obj屬於中轉文件,生成程序之後,是沒有用的,我們祗要保留hello.c和hello.exe即可。

生成的文件清單如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

在這裡可以看到,雖然我們編寫的源代碼文件僅有91字節,但最終機器執行程序的實際代碼大小是8K字節。所以不要以為自己寫得短,機器所要做的事情就少,那不是由你控制的,別把精力花費在縮短源代碼的字節數和行數上,那是沒用的,程序效率不體現在源代碼的緊湊上。放大了的字節數,其實是因為我們使用了printf()函數,它的可執行機器碼被從標準庫msvcrt.lib中抽出來,嵌入到.exe中了——這基本上就是printf()函數的真實大小,大約5K左右,是非常龐大而複雜的一個函數。

這裡hello.exe就是我們所要的可執行文件,運行之:
图片附件: 游客没有浏览图片的权限,请 登录注册

程序運行之後,仍然處於工作臺上,無需使用諸如getchar()之類的語句去暫停程序,那是在IDE環境中的特殊需要,正常寫程序是不用的。那麼為什麼在IDE環境中需要呢?那僅僅是Visual Studio才這樣嗎?做一個實驗就知道了:打開資源管理器,轉到.exe所在程序的文件夾中,雙擊它,現象就是一閃即逝。這就是答案,在IDE中也是這般運行程序的。

[ 本帖最后由 TonyDeng 于 2015-10-5 15:06 编辑 ]

授人以渔,不授人以鱼。
2015-10-05 13:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
在Visual Studio IDE中,我們對Project的屬性指指點點,進行各種編譯設置,實際上不過是用工具軟件替我們書寫編譯參數,省去記憶那些參數格式的麻煩,而且有詳細的信息提示,在命令行下,那是需要程序員自己死記硬背的(當你在菜鳥面前華麗麗地敲出如此一長串莫明其妙的指令,絕對會收穫無限的崇拜眼光,至高無上的虛榮心由此得到滿足,這就是“高人”們極力推薦和炫耀的原因)。在IDE中進行編譯參數設置,最終的結果歸結在如下兩個畫面中,上為編譯參數,下為鏈接參數:

图片附件: 游客没有浏览图片的权限,请 登录注册


图片附件: 游客没有浏览图片的权限,请 登录注册

      
你完全可以在IDE中進行設置,然後將這些參數文字複製黏貼到一個批處理文件(.bat)中,在命令行編譯程序。

授人以渔,不授人以鱼。
2015-10-05 15:23
蓝色风暴cl
Rank: 8Rank: 8
来 自:新疆
等 级:蝙蝠侠
威 望:3
帖 子:163
专家分:704
注 册:2015-9-6
收藏
得分:0 
能用简体字写吗?表示看的好累。。

欢迎大家加好友哦,多找我聊聊吧!
2015-10-05 16:15
Flame_L
Rank: 1
等 级:新手上路
帖 子:7
专家分:2
注 册:2014-7-22
收藏
得分:0 
回复 3楼 TonyDeng
图片附件: 游客没有浏览图片的权限,请 登录注册
我能问问那个不包括路径集是怎么个情况?
我最先那个CL命令也是不行最后设了一下环境变量就行了
谢谢啊
2016-05-01 19:48
快速回复:如何使用Visual Studio命令行環境編譯和運行程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018431 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved