什麼是一些工具,給出一個EXE文件,刪除所有未使用的代碼,並與代碼的新的EXE文件真正使用的應用程序?我認爲這樣的事情應該存在。只是爲了好奇;但是我認爲它可以作爲生成較小的EXE文件而沒有未使用的代碼的工具。
P.S .: Delphi產生包含應用程序中使用的所有對象的代碼的獨立EXE文件,但並非真正使用此對象的所有元素。這使得大文件。我記得Pascal的第一個版本只包含真正使用的代碼,並沒有插入未使用的代碼,EXE文件也較小。
什麼是一些工具,給出一個EXE文件,刪除所有未使用的代碼,並與代碼的新的EXE文件真正使用的應用程序?我認爲這樣的事情應該存在。只是爲了好奇;但是我認爲它可以作爲生成較小的EXE文件而沒有未使用的代碼的工具。
P.S .: Delphi產生包含應用程序中使用的所有對象的代碼的獨立EXE文件,但並非真正使用此對象的所有元素。這使得大文件。我記得Pascal的第一個版本只包含真正使用的代碼,並沒有插入未使用的代碼,EXE文件也較小。
如果您的應用程序非常龐大,請檢查您是否沒有編譯大量調試信息。 嘗試發佈構建並檢查它是否更小。
我有時候做的是配置項目,將所有.dcu文件編譯到一個文件夾中。這樣你很快就能看到所有編譯進你的.exe的無用單元。經常發生的情況是,您爲單個函數包含單個單元,但是反過來,您會得到一整棵依賴單元。你只需要搜索你的使用子句並嘗試以某種方式擺脫這些依賴關係。
我認爲gexperts和cnpack都包含顯示依賴項的工具,或者掃描項目中未使用的單元。他們可以對此有所幫助。
刪除無用的依賴關係後,始終可以用upx壓縮編譯好的exe文件。這樣做有缺點(巴里凱利前段時間寫過),但我對它有很好的體驗。它有時會使文件4x儘可能小,這可能是一個大問題。
你好Wouter,謝謝你的回答。是的,我知道你告訴過你。沒有一般我想試圖從另一方面看問題:有一個exe文件,有一些實用程序「掃描」這個exe文件,並清除所有代碼未使用重寫一個新的exe文件,只有代碼真正使用?結果應該是一個更小維度的新文件。 –
當前Delphi還排除未使用的代碼。你可以很容易地在Delphi中看到這個。如果你編譯,你的代碼的水溝裏會出現「藍點」。沒有使用的功能沒有藍點,這意味着它們被排除在外。如果您選中項目選項中的優化複選框,代碼將被重寫以更多地使用寄存器,從而消除某些變量。
儘管如此,Delphi可執行文件的增長尤其是在使用某些單元時。我認爲你可以在Delphi 7中創建的最小的.exe大約是10Kb。在後面的版本中,這可能會更大一些。文件大小
重要的原因是
這是RTTI在最近的Delphi版本中擴展的一個事實。我認爲這也會導致有關類的RTTI元信息消耗更多空間。對此你只能做很多事情。
一般來說,我認爲Delphi編譯器還是做了很多優化。你不必擔心exe文件的大小。如果你這樣做,你可以試試像upx
這樣的打包機。我有很好的upx經驗。它將可執行文件的大小減少到原始大小的五分之一或更少,同時保留所有功能。
你好Golez,我已經下載upx和像我一樣。我已經閱讀了你所說的解釋造成大exe文件的原因。他當然會談論德爾福,但總的來說,我會告訴任何exe文件,而不是delphi生成的必要文件。我簡單地問,是否有一些工具可以刪除exe文件中的已死代碼(或未使用的代碼)。 PS:感謝Rob爲了更好地理解我的問題。 –
由於兩個Delphi標籤以及Delphi和Turbo Pascal在你的問題中的提及,我真的沒有看到這是關於一般的可執行文件。但是我注意到你談到了可執行文件,這就是爲什麼我提到了UPX。 UPX適用於所有可執行文件,而不僅僅是使用Delphi構建的那些可執行文件,但是如果你有源代碼,我會使用它。 – GolezTrol
可能的重複,[減少exe文件](http://stackoverflow.com/q/7398580/576719)。 –
你已經提問這個問題了 – Roddy
是的,但那次我問及如何使用delphi。有關於它的建議。現在我,是的,我問類似的事情,但從另一邊看問題。我理解你當然,但現在我問一些工具,有一個EXE文件「掃描」它,並清除所有未使用的代碼重寫EXE文件與使用的代碼只。這與幾年前的這個問題有所不同。 –