目前還是使用Visual C++ 2010,等到Visual C++ 2015出了後,這次真的要買正版了,並用一段長時間,因此買完後,我會將這些文章修成該版本的,並度過我這五年…發文章
話不多說
我先來講一下執行檔是如何生成的
|
取自C++ Primer Plus 6
|
其實簡單來說,就像網路上面講的,他將您的*cpp or *.c,,經由Compiler編譯成一個個機器看得懂的組合語言,接著再將他和exe必要的一些startup code,及*.lib利用liner合成一個執行檔
其中startup code是一些您程式main啟動前要使用的一些東西,像是堆疊或者一些暫存器,您在PE(Portable Executable)格式的檔案檔頭部分應該就是這些東西,進入main後,會是由您的*.o及lib的實體函式組成
簡單來說lib也是由*.o結合而成,他實際名稱是靜態函式庫(static libary),您可想說他其實就是那些*.o的函式打包在一起,成一個集合,linker會利用他們做好的方法去分析*.o及*.lib,將您程式對應變數或者是函式建立關聯
換句話說就是假設你要執行A();他會找A()所在的*.o或者是*.lib,將它指向那個位置,也就是當您執行到A(),他會根據那個位置,去執行實體的程式片段,當所有關聯起來,您的程式就變成一隻完整的程式,它就一定可以執行
要是關聯不起來呢,其實你compiler就不會過,就算會過你也link不起來,您可把compiler和linker看成是一個成熟的技術,當您的程式經由他們處理完,過了,保證能動就對了
再來是資料夾相關問題,您建立一個Visual C++ CLR的專案,您在專案底下第一層,一定會有一個Debug和Release的資料夾,這是32bit編譯出來的程式會出現的地方,顧名思義,要是你選debug版本,他編譯出的程式會到debug資料夾下,release版本就會出現在release資料夾下
這兩個版本有什麼差別呢,其實就是debug版,你程式在跑時可以設置中斷點除錯,相反的release就不行,當然你要有除錯這個功能,程式一定會加入一些除錯的機制,因此編譯出的程式一定比較慢,release相對的比較快(其實快很多,你程式寫大時編譯兩種版本利用stopwatch算算看,可以很明顯的看出時間差異)
當然現在程式可以編成64bit程式,當您編出程式後,會多一個x64的資料夾,裡面一樣有debug跟release的資料夾,同32bit就不重新描述了
在下一層裡,主要是放您的程式碼跟頭檔的根目錄,從此出發,您可在該目錄下建立資料夾,管理您的程式碼或是lib檔,這個目錄下面也有debug和release和x64,裡面放的就是您編譯完的*.o,Visual C++都幫您配置好了,比起Borland C++ XE7,還要自己管理您的全部檔案,方便很多
等買Visual
C++ 2015再來補圖Orz
再來就要講C++的部分了
沒有留言:
張貼留言