上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2007-5-16, PM 3:40 星期三 文章主題: [C++][4]將程式碼compile成exe檔 |
|
|
對很多新手來說,都會有一個最基本也最重要的問題:
怎麼將寫好的cpp檔compile成exe檔
這裡我們以Visual Studio C++.net 2003(Ver. 7.1)來做說明
首先,打開VC++如圖:
剛安裝好VC++的人可能會發現跟圖片上有一點點不同,那是因為VC++會記錄個人的偏好設定,所以介面上多少有點不一樣,不過大體來說應該差不多。
接著我們要來新增一個專案,什麼是專案?在剛學程式的初期,我們一般都是一個cpp檔compile成一個exe檔,但是隨著編寫的程式碼越來越龐大,我們會把程式分割成許多個cpp檔跟許多個h檔以及許多的資源檔,而這許多的程式會合起來compile成一個exe檔,這就會構成一個專案,簡單來說,一個專案到最後compile出來就是一個exe檔,而此專案內包含的,就是組成這個exe檔的所有檔案。
要新增專案則如下圖,先點選功能表的檔案(F),然後移到新增(N)上面等一秒,旁邊就會出來一個選單,按下專案(P):
接著就會出現新增專案對話方塊,點選方塊左上的Visual C++專案,再在右邊的範本裡尋找Win32主控台專案,然後在名稱欄中輸入你想要的名稱(例:Example),最後選擇你要放置此專案資料夾的位置,按下確定:
此時會出現Win32應用程式精靈,預設的頁籤是概觀,我們要先點選應用程式設定,再將右邊的空專案打勾,按下完成:
我們可以在下圖看到方案總管中有了一個空白的專案,在此圖中,方案總管是位於畫面右邊的浮動視窗,但預設中,方案總管應該是在畫面左邊的固定視窗,應該很顯眼才是,要是實在找不到,可以在功能表的檢視(V)中開啟它,這就不附圖了。
接著我們就要新增一個cpp檔,新增的方式有許多種,我們介紹我個人最常用的一種,先在方案總管裡原始程式檔資料夾上按下滑鼠右鍵,將滑鼠移到加入(D)上等待1秒,然後選擇加入新項目(W),如下圖。當然,如果你已經用附屬應用程式中的記事本編輯好了cpp檔,你也可以選擇加入現有項目(G)來將其引入此專案中。
選擇之後會出現加入新項目對話方塊,選擇分類中的程式碼,再選擇範本中的C++檔(.cpp),之後輸入你想要的cpp檔名稱(例:main),位置部份會預設在此專案資料夾中,一般來說是不用修改的,按下開啟:
以上動作會在主編輯視窗中增加一個main.cpp頁籤,接著我們就可以在此輸入cpp檔的內容了。
我們將[3]namespace裡最底下那個範例的程式碼輸入,如下圖,我們可以看見,頁籤的右上角以及主題的最後面都會出現一個*號,這是代表程式碼有了異動卻還沒有存檔過,只要執行存檔,它就會消失。
不過我們並不需要執行存檔,只要直接建置方案,VC++就會自動在建置之前幫你存檔,按下功能表上的建置(B),選擇建置方案(B)便可以將此專案compile成exe檔了,參考下圖:
建置完成後,畫面下方的輸出視窗會顯示建置:1 成功,0 失敗,0跳過的字樣,代表建置成功,如果程式有bug的話,就會顯示有幾個失敗:
接著我們按下功能表中的偵錯(D),然後按下啟動(S),或者按下啟動但不偵錯(G)也是可以的,如上圖所示。
最後,我們就可以看到執行的結果囉,在畫面的中間會出來一個cmd或稱主控台(console)視窗,而其主題列顯示著此exe檔的路徑位置。如下圖顯示的,只要按下任意鍵,cmd就會不見,回到編輯cpp檔的畫面。
以上就是完整程式設計流程,從開啟IDE→建立專案→編輯cpp檔→compile或稱建置(Build)→執行exe檔,所有的軟體大致就是這樣誔生的,只是一般來說不太可能一次ok,一定會有很多錯誤(bug)要慢慢的修正(Debug),最後才會出來正確可執行的exe檔。
不過嘛,VC++.net 2003這套軟體是要錢的,而且頗貴,現在大概也很難買到,因為VS 2005已經出了,VS是指Visual Studio,微軟已經把它底下的程式開發環境軟體都整合在一起了,比較早期的時候是可以分開來買的,比較便宜,現在我就不知道了,目前應該是要直接買一套VS(包括VC++、VB、C#、VJ++…等等),價格可能在接近2萬元左右。
因此,如果要找VS2003,有在用BT或eDonkey、eMule的人應該知道怎麼做……如果要找VS2005,微軟網站上有試用版可以下載,請在下列網址上尋找:
http://www.microsoft.com/taiwan/msdn/express/default.aspx
除了VS之外,還有兩個很有名的C++ IDE軟體,一個是BCB,一個是Dev C++,因為BCB也是收費軟體,所以就不介紹了,我們的重點在Dev C++,這是一個免費的軟體,其官網應該是下面這個:
http://www.bloodshed.net/dev/
如果有人對英文不熟悉,可以在下面這個網站下載:
http://www.math.ncu.edu.tw/~jovice/c++/boards/devcpp.htm
要額外提醒的是,因為我個人沒用過Dev C++,所以不確定它是否能支援DirectX,我是覺得理論上來說可行,只要把路徑及要引用的lib檔設好,應該是沒什麼問題,但是我沒試過所以不敢確定。而且如果是使用Dev C++的話,那肯定是沒辦法使用MFC了,MFC是Microsoft Foundation Class(微軟基礎類別),它將許多Win32 API的東西包裝了起來,是寫視窗程式時頗為好用的工具,不過只有用VC時才能使用。
當然並不是說用了Dev C++,要是沒辦法引用DirectX就會沒辦法寫遊戲,因為還有一個自由軟體叫OpenGL,這也是寫遊戲時常用的資料庫之一,不過我個人沒學過,而且中文資料好像比較少,所以這就要等有研究的大大們來幫忙寫些教學了。
yag 在 2007-8-6, PM 1:57 星期一 作了第 2 次修改 |
|
回頂端 |
|
|
rostic 稍嫌羞澀的路人
註冊時間: 2007-05-13 文章: 4
0.00 果凍幣
|
|
回頂端 |
|
|
ilms 偶而上來逛逛的過客
註冊時間: 2007-05-11 文章: 6
0.00 果凍幣
|
發表於: 2007-5-22, AM 6:07 星期二 文章主題: |
|
|
我都是用Dev C++ 搭配OpenGL的...
微軟的東西感覺上不怎麼好= ="
雖然很方便... |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2007-5-22, AM 11:54 星期二 文章主題: |
|
|
ilms 寫到: | 我都是用Dev C++ 搭配OpenGL的...
微軟的東西感覺上不怎麼好= ="
雖然很方便... |
微軟的東西的確不怎麼好,但就是贏在方便跟普遍性
當幾乎整個業界都在用VC+DX時
想進入業界的,不可免俗地就要學一學囉 |
|
回頂端 |
|
|
timchio 偶而上來逛逛的過客
註冊時間: 2010-08-02 文章: 7
80.34 果凍幣
|
發表於: 2010-8-3, PM 5:47 星期二 文章主題: 在請問一下EXE檔這部份 |
|
|
就我照大大所說的步驟做了
之後去DEBUG
找到我的EXE檔
之後傳給我朋友
但我朋友都說不能開啟
可能是啥問題阿
他們都說顯示
"因為找不到MSVCP100D.DALL" |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2010-8-3, PM 5:54 星期二 文章主題: Re: 在請問一下EXE檔這部份 |
|
|
timchio 寫到: | 就我照大大所說的步驟做了
之後去DEBUG
找到我的EXE檔
之後傳給我朋友
但我朋友都說不能開啟
可能是啥問題阿
他們都說顯示
"因為找不到MSVCP100D.DALL" |
因為是Debug的關係
請把組態改成Release
重新編譯後到Release資料夾中取得exe檔 |
|
回頂端 |
|
|
timchio 偶而上來逛逛的過客
註冊時間: 2010-08-02 文章: 7
80.34 果凍幣
|
發表於: 2010-8-3, PM 6:20 星期二 文章主題: Re: 在請問一下EXE檔這部份 |
|
|
因為是Debug的關係
請把組態改成Release
重新編譯後到Release資料夾中取得exe檔[/quote]
兩個組態我都用過了...多方朋友還是說不行
請問一下這exe檔是直接去
C:\Users\XXX\Documents\Visual Studio 2010\Projects\XXXX\Release Or Debug 中去取得?
還是要從其他地方
拍謝一些新手問題><
之後我拿大大您的[C++][10]函式、變數範疇和常態變數中簡易RPG的EXE檔
和我直接從你上面的CPP檔複製貼上後重置執行後在Debug及Release資料夾中出來的EXE檔
發現檔案大小差很多
大大檔案大概是284KB
而我轉出來的檔案約在36.5KB
應該很明顯是我在製作過程有錯..... |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2010-8-3, PM 9:05 星期二 文章主題: Re: 在請問一下EXE檔這部份 |
|
|
timchio 寫到: | 兩個組態我都用過了...多方朋友還是說不行
請問一下這exe檔是直接去
C:\Users\XXX\Documents\Visual Studio 2010\Projects\XXXX\Release Or Debug 中去取得?
還是要從其他地方 |
位置是看你把專案資料夾放在什麼地方而定
不是固定的位置
一般來說Release/Debug資料夾會跟你的cpp檔及sln檔在同一個地方
你可以重新在桌面上設立個新專案資料夾並編譯試試
exe檔會在該專案資料夾之中 |
|
回頂端 |
|
|
timchio 偶而上來逛逛的過客
註冊時間: 2010-08-02 文章: 7
80.34 果凍幣
|
發表於: 2010-8-4, PM 8:40 星期三 文章主題: 還是一樣的狀況...在麻煩了 |
|
|
給大大看一下我整個設定的流程
應該是沒有太大的意外
但最後給別人的時候還是一樣開不起來....
圖檔較詳細我用寄E-mail的方式寄到信箱了
因為圖檔過大不好放在上面
假如要我再放我在另外放置
拍謝@@ |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
|
回頂端 |
|
|
timchio 偶而上來逛逛的過客
註冊時間: 2010-08-02 文章: 7
80.34 果凍幣
|
發表於: 2010-8-17, AM 8:10 星期二 文章主題: |
|
|
這段期間我有找到解決方法哩
而不是使用dll檔一起附上的方式
我這邊簡單說明一下
只要針對
[Project]->[Proerties]->[C/C++]->[Code Generation]->[Runtime Library]
這流程下
use "Multi-threaded Debug (/MTd)" for Debug version or "Multi-threaded (/MT)" for Release version
/MT 與 /MD 的差異在於要靜態或動態來引用 library 程式碼
選用靜態的話,編譯器會將引用到的 library 執行碼直接寫到你編出的 exe 檔內
選用動態的話,那些引用的 library 執行碼就不會寫出,但是在執行時,你必須有包含所需執行碼的 dll 檔才能跑
靜態的優點是不用準備一堆 dll 檔;缺點是編出來的檔案較大、任何 library 一旦有變動就得重新編譯整支程式
動態的優點是編出來的檔案較小、如果 library 有變動的話,只需替換上新的 dll 即可,不用重新編譯程式;缺點是你現在遇到的問題:無法保證執行端一定都會湊齊所需的 dll
給一些跟我同樣VS2010有問題的人^^ |
|
回頂端 |
|
|
happylin 略有貢獻的成員
註冊時間: 2007-07-26 文章: 70
127.34 果凍幣
|
發表於: 2010-10-3, PM 2:46 星期日 文章主題: 為什麼沒人介紹如何在command line 下compiler 程式 |
|
|
大家都一直介紹IDE 下compiler project
其實. 我覺得一開始就用IDE 不是很好
很多東西都不會了解
且剛開始寫的小程式. 跟本可以不用建立project 在command line 下. 下個命令就compiler好了.
事實上. java 的官方教材也是重command line 下開始的. 連考SCJP 都會考到.
為什麼到了C (一個比java 更古老的語言) 大家全依賴起 IDE 了. |
|
回頂端 |
|
|
還是零分 散播福音的祭司
註冊時間: 2007-09-19 文章: 164
653.83 果凍幣
|
發表於: 2010-10-5, PM 6:28 星期二 文章主題: Re: 為什麼沒人介紹如何在command line 下compiler 程式 |
|
|
比起使用命令列編譯程式
IDE是很方便的道具
但是我連這方便的道具都無法擺平了...
使用命令列會殺死我很多腦細胞吧 |
|
回頂端 |
|
|
Weijaw 稍嫌羞澀的路人
註冊時間: 2013-07-18 文章: 2 來自: 台灣台中市 16.94 果凍幣
|
發表於: 2013-7-18, PM 5:42 星期四 文章主題: 我不會把DEV轉成.exe |
|
|
我不會把DEV轉成.exe可以教一下ㄇ??
我是新手還不太會 |
|
回頂端 |
|
|
taothundering 偶而上來逛逛的過客
註冊時間: 2015-04-17 文章: 9
356.98 果凍幣
|
發表於: 2015-7-31, PM 4:56 星期五 文章主題: |
|
|
謝謝分享 |
|
回頂端 |
|
|
|