Monday, November 13, 2006

Configuration of static executable program in Borland C++ Builder

所謂的靜態可執行檔就是一種不需要搭配其他的DLL就可以直接使用的執行檔。很多人常常在問,為何自己做出來的檔案在其他沒有安裝BCB的電腦就不能執行?主要的原因就是在於當你用BCB寫一個程式時,無論這個程式有多簡單。或多或少都會用到一些BCB所提供的動態程式庫。當把執行檔拿到一台沒有安裝BCB的電腦時,因為沒有這些DLL,所以就沒有辦法執行了。要製作一個靜態執行檔其實很簡單,只要簡單的將兩個Project的Option設定好,再重新Compile就可以了。這兩個Option如下:
Project->Options->Packages->Runtime packages->Build with runtime packages
Project->Options->Linker->Linking->Use dynamic RTL

請確定這兩個選項在你的Project是處於Disable,也就是『未被勾選』的狀態。然後重新Compile一次您的程式就可以了。
若您有興趣進一步知道這兩個選項是什麼,此處大概說明一下。『Build with runtime packages』是問您要不要將一些BCB所提供的元件程式庫以動態的方式與您的程式link起來。如果您選Enable,那麼因為是動態的方式link的,所以您的主程式檔會變得比較小,但是您就需要那些packages的DLL檔案才能使用他。換句話說,其實不是一定要靜態執行檔此才能在沒有安裝BCB的電腦上面使用,只要您知道自己的程式用了那些BCB所提供的Package,並且將對應的DLL拷貝至該電腦中,就可以以動態連結的執行檔來執行。
『Use dynamic RTL』主要關於BCB在處理程式中有關於動態程式庫的部份是否要以動態連結來link您的程式檔。如果,選擇要的話,則執行檔所處的電腦上必須要有CC3260.DLL及CC3260MT.DLL這兩個檔案(如果您的程式是設定連結到Multithread程式庫,那麼您要的是CC3260MT.DLL。反之,就是CC3260.DLL)。這也就是說,取消這個選項的話,就不需要這兩個DLL了。當然,您的主程式檔又會大了一些。因為BCB將這些DLL的內容改以靜態的方式直接加入於您的執行檔中。

No comments: