CB2006生成的目标文件太大。
最近将我们的工程升级到CB 2006,但发现生成的Exe和DLL文件读比以前版本的大,并且在CB2006中Debug版本只有2M多的DLL Release生成后却有4M多,不知怎么回事。
[解决办法]
默认选项下:
Debug 一般需带上 Runtime 文件才能运行
Release 则不需要,被编译到 EXE 文件内了
而且还可以通过 Option 来控制以上的选项
多问一句,文件大有什么问题吗?
[解决办法]
Release 版本一般是比 Debug 版本要小的呀。
檢查一下編譯選項及優化選項。如果都是多出固定的長度,也可能是包的包含列表中少了某個包,以致於把該包也鏈接進去了。
[解决办法]
在B2006 的project 文件中,在Use dynamic RTL 方式下,可以這麼看:
libraries 節點,是靜態庫,代碼將被靜態鏈接
sparelibs 則是备用的鏈接庫,代碼將被按需要動態鏈接,即DLL(BPL)方式。
packages 則是包的包含列表,如果需要用到那些包,則在程序加載時被同時加載。
檢查一下,把CodeGuard選項去掉。同時,在編譯優化中,選擇生成盡可能小的代碼,這樣目標文件會小些的。但個人感覺編譯優化也不會差異到2M和4M這麼大,倒是CodeGuard及lib項可能性大些。
如要更小文件,鏈接器選項可以不要鏈接編譯信息,並且編譯選項中的DEBUG項目全部不要。
同時選擇1字節對齊,1字節杖舉,但這將對程序產生很大影響。
注意:如果項目中有pas文件,那麼也要對pas編譯選項進行類似設定。
編譯優化中,選擇生成盡可能小的代碼,之後 調試時只能捕捉到本地局部變量的值,很多值會因優化而捕捉不到。(調試器有提示是因優化的原因)。希望對你有幫助吧。
[解决办法]
注意一點:做速度優化會生成更大體積的目標文件。