Release版本的exe文件鏈接的是標準的MFC DLL(Use MFC in a shared or static dll),如MFC42.DLL。這些DLL在安裝Windows時已經配置,所以這些程序能夠在沒有安裝VC的機器上運行。這種方式生成的exe文件較小,運行速度較快,但不含有調試信息,所以不容易查錯(Release版本下也能進行某些調試工作,但要對編譯項進行相應的設置)。一般是在調試正確之後,選擇這種方式,故稱為發佈方式。不過需要注意,有時在Debug方式下調試正確的程序,在Release方式下卻不能正確運行。這是正常現象,因為兩者的運行環境稍有差別。出現這種問題時,要耐心分析解決,一定要以Release版本正確為準。
而Debug版本的exe鏈接了調試版本的MFC DLL文件,如MFC42.DLL。因為編譯時加入了調試信息,所以可以很方便地進行單步執行和跟蹤等調試。當然,這樣產生的執行文件較大,執行速度也較慢。因為缺MFC42.DLL,所以在沒有安裝VC的機器上也不能運行,除非在鏈接時選擇靜態鏈接庫。
一般講來,在早期的Debug版本中,exe文件只能在裝有VC的機器上運行。現在有的機器沒裝VC也可以運行,但如果不採取措施,將看不到屏幕實現的結果。其原因是程序很快執行完畢,來不及看。解決的最簡單辦法是在結束時增加一條「getchar();」語句。下面的源程序就是採用這種簡單方式。
【例24.1】使用getchar函數的示例源程序。
#include <stdio.h> int sum (int ,int ,int ); int main ( ) { printf ("Sum=%d\n" ,sum (1 ,3 ,5 )); getchar (); // 增加一句 return 0 ; } int sum (int a ,int b ,int c ) { return a+b+c ; }
這個文件的exe為153KB。也可以使用system函數,但要包含定義它的頭文件。
【例24.2】使用system函數的示例源程序
#include <stdio.h> #include<stdlib.h> // 定義system 函數的頭文件 int sum (int ,int ,int ); int main ( ) { printf ("Sum=%d\n" ,sum (1 ,3 ,5 )); system ("pause" ); // 增加一句 return 0 ; } int sum (int a ,int b ,int c ) { return a+b+c ; }
使用Release方式產生的exe文件為32KB。
在一台沒有安裝VC的機器上的運行結果如下:
Sum=9 請按任意鍵繼續. . .