想把程式改為build with runtime packages重新編譯,但如何知道要附上那些bpl ? |
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
> 1.想把程式改為build with runtime packages重新編譯以縮小.exe之大小,但如何知道要附上那些bpl ?我的delphi是7.0版,程式有用到indy(9.0版),quickreport(4.06版),ado,及一般vcl元件 ?
把程式丟到沒有安裝 Delphi 機器上執行, 看它說缺什麼檔案 >2.縮小後之.exe,執行起來會比較快嗎? 不一定, 因為要執行的某些程式碼是在別的檔案了 >3.那些bpl 應放置在那個目錄中呢?放置在那個目錄比較好? 和自己 exe 相同的目錄 >4.縮小後之.exe穩定性會不會比較差呢? 不會
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
在delphi/bin目錄裡面有TDUMP.EXE,這個命令列檔案是可以將某個執行檔所需要的dll檔列出來從命令列下指令tdump.exe -em 你的執行檔 > C:\output.txt 輸出的結果就像 Turbo Dump Version 5.0.16.12 Copyright (c) 1988, 2000 Inprise Corporation Display of File C:\PROJECT1.EXE IMPORT: vcl60.bpl='__fastcall Consts::initialization()' IMPORT: vcl60.bpl='__fastcall Consts::Finalization()' IMPORT: vcl60.bpl='__fastcall Graphics::initialization()' ... IMPORT: vcl60.bpl='__fastcall Controls::TControl::~TControl()' IMPORT: rtl60.bpl='__fastcall System::initialization()' IMPORT: rtl60.bpl='__fastcall System::Finalization()' IMPORT: rtl60.bpl='__fastcall System::UnregisterModule(System::TLibModule *)' ... IMPORT: CC3260MT.DLL='operator delete(void *)' IMPORT: CC3260MT.DLL='_CatchCleanup()' IMPORT: CC3260MT.DLL='_InitTermAndUnexPtrs()' ... 就可以知道需要vcl60.bpl,rt160.bpl,CC3260MT.DLL等檔案只要將這些檔案放在執行檔相同的目錄底下就可以執行 以下是題外話但使用者會覺得你的程式怎麼這麼大,居然有好幾MB的大小,不像VC,VB寫出來的程式只有幾十KB而已我建議將這些檔案放在C:\WINNT\system32\底下,只要安裝一次,以後就只要發布幾十KB的執行檔就可以了這觀念在我發表的另外一篇文章中提到,你可以作為參考 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=68465
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
實際測試比較重要
拿去別台 PC 測試, 是否真的只要它列出的檔案, 還是會警告說要某某 bpl ? ===================引 用 文 章=================== bugmans你好: 照你說的去試只跑出 gdi32.dll,user32.dll ...但專屬delphi之bpl不見半個,我的delphi 是7.0 pro,不信你可試試看
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
你是不是將build with runtime packages給取消了,我隨便拉幾個indy和ADO的元件放到Form1上
編譯出來的執行檔大小也才33.5KB,還附上tdump出來的結果,需要rtl70.bpl,vcl70.bpl,adortl70.bpl,dbrtl70.bpl等檔案 http://delphi.ktop.com.tw/download.php?download=upload/45bea404a9d54_test.zip |
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
bugmans你好:
謝謝你,我試出來,但一個怪事出現,那個build with runtime packages程式隨時都正常compile,其他的程式都不能compile,有幾支程式錯誤訊息如下: project : c:\my programs\project1.exe raised too mamy consective exception : 'floating point check at 0x0147ee10' proces stopped . use step or run to continue 有幾支程式錯誤訊息如下: project : c:\my programs\project1.exe faulted with message : 'access violation at 0x7c92edcd : write of address 0x00030ffc'. proces stopped . use step or run to continue 編譯會產生之錯誤訊息似乎與程式包含之元件有關,這下該怎麼辦,除了那個build with runtime packages程式可以compile,所有程式都不能compile,我是中毒還是delphi設定之問題呢? |
j58651118
一般會員 發表:0 回覆:1 積分:0 註冊:2006-07-16 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
我最常用的是BCB6,我沒有寫過Delphi程式,我沒有遇過這類問題
建議用其他的軟體dump執行檔看看有沒有出現vclx70.bpl http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=24605 如VC的dumpbin或者是Dependency Walker 2.2 |
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
bugmans你好:
VC的dumpbin或者是Dependency Walker 2.2,不是只能讀出一個dll中的函數名嗎?它能讀出一個exe有用到那些bpl嗎? ===================引 用 文 章=================== 我最常用的是BCB6,我沒有寫過Delphi程式,我沒有遇過這類問題 建議用其他的軟體dump執行檔看看有沒有出現vclx70.bpl http://delphi.ktop.com.tw/board.php?cid=30&fid=72&tid=24605 如VC的dumpbin或者是Dependency Walker 2.2 |
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
不知道你有沒有實際下載Dependency Walker開啟exe檔看看能否找相依的dll
還是看到文章討論是dll就認定exe無法顯示 我以這個檔案為例 http://delphi.ktop.com.tw/download.php?download=upload/45bea404a9d54_test.zip 在Dependency Walker出現的畫面 使用VC的dumpbin.exe,指令為DUMPBIN.EXE /imports Project1.exe > output.txt 到output.txt看結果 假如你有VB的話我再補充一個 http://www.planet-source-code.com/vb/scri pts/ShowCode.asp?txtCodeId=7390&lngWId=1 scri pts全形空白去掉 視窗的標題也是exe檔,圖的左下角則顯示需要哪些dll檔 或者你將有問題的檔案上傳上來,我試試看是否少列了vclx70.bpl |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
vclx70.bpl 經常會相依在其他的bpl上。dependency後會找到exe或dll所相依的bpl。但這些bpl其實還有可能相依到其他的bpl。故需展開樹狀圖再l往裡查。以bcb6中的sample元件,會使用到bcbsmp60.bpl,而這個bpl又會相依到vclx60.bpl (這就是一直查不到的原因的一種)。
或者它也會出現在下方module^ 那裡面,但很難看就是,含了一堆的系統預設dll… 剛看到一個地方可以比較精準的看出少的borland檔案。即,在下方 symbols^的欄位按一下排序…會發現這些檔都屬於 none,就通通找到了!
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |