電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
[C++][4]將程式碼compile成exe檔

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念
上一篇主題 :: 下一篇主題  
發表人 內容
yag
Site Admin


註冊時間: 2007-05-02
文章: 684

2639.56 果凍幣

發表發表於: 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 果凍幣

發表發表於: 2007-5-20, AM 1:13 星期日    文章主題: 引言回覆

雖然我沒有用Dev C++加上DirectX寫出一個Sample
不過DirectX和OpenGL一樣都是一個輔助套件
在Dev C++中可以開發Win32的程式
所以它是有辦法來使用DirectX的才對!

以下這裡有講,似乎DirectX和Dev C++一起使用有些問題
不過仍然可以用就是
http://www.gamedev.net/reference/articles/article2067.asp
回頂端
檢視會員個人資料 發送私人訊息
ilms
偶而上來逛逛的過客


註冊時間: 2007-05-11
文章: 6

0.00 果凍幣

發表發表於: 2007-5-22, AM 6:07 星期二    文章主題: 引言回覆

rostic 寫到:
雖然我沒有用Dev C++加上DirectX寫出一個Sample
不過DirectX和OpenGL一樣都是一個輔助套件
在Dev C++中可以開發Win32的程式
所以它是有辦法來使用DirectX的才對!

以下這裡有講,似乎DirectX和Dev C++一起使用有些問題
不過仍然可以用就是
http://www.gamedev.net/reference/articles/article2067.asp

我都是用Dev C++ 搭配OpenGL的...
微軟的東西感覺上不怎麼好= ="

雖然很方便...
回頂端
檢視會員個人資料 發送私人訊息
yag
Site Admin


註冊時間: 2007-05-02
文章: 684

2639.56 果凍幣

發表發表於: 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
文章: 684

2639.56 果凍幣

發表發表於: 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
文章: 684

2639.56 果凍幣

發表發表於: 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
文章: 684

2639.56 果凍幣

發表發表於: 2010-8-8, AM 11:43 星期日    文章主題: Re: 還是一樣的狀況...在麻煩了 引言回覆

timchio 寫到:
給大大看一下我整個設定的流程
應該是沒有太大的意外
但最後給別人的時候還是一樣開不起來....
圖檔較詳細我用寄E-mail的方式寄到信箱了
因為圖檔過大不好放在上面
假如要我再放我在另外放置
拍謝@@

寄信箱…?哪個信箱?我沒收到
總之,我查了一下
MSVCP100D.DLL是vs2010特有的
要發佈2010編譯出來的執行檔的話
你要把這個檔案跟exe檔放在一起丟給別人
如果還有報說缺少什麼檔案
一樣是一起包給別人

ps.收到信了,抱歉,那個信箱我一般都沒在用,剛剛才想起來我還有那個信箱
據論壇成員babu61509所說
我的這個作法很爛
他說只要請沒安裝過vs2010的使用者下載安裝以下的可轉散發套件即可:
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
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

652.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可以教一下ㄇ??
我是新手還不太會 Embarassed
回頂端
檢視會員個人資料 發送私人訊息
taothundering
偶而上來逛逛的過客


註冊時間: 2015-04-17
文章: 9

356.98 果凍幣

發表發表於: 2015-7-31, PM 4:56 星期五    文章主題: 引言回覆

謝謝分享Smile Smile
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作