環境:BCB6.0 + TeeChart 7 + Visual Studio 2005
專案:BCB開發界面,使用TeeChart7繪制曲線;VC開發底層驅動,提供dll庫給BCB呼叫;呼叫約定是stdcall;編譯選項里use dynamic...和build with runtime package前的勾去掉了。除了主界面以外總共啟動了11個執行緒用來訪問驅動和更新界面上的資料顯示。生成的執行檔案是放在一個沒有安裝bcb的windows xp sp2上運行的。
直接在本機編譯BCB工程時,生成的執行檔案大小為2.77M,運行一段時間后錯誤百出,最常見的是某個重繪執行緒掛起,偶爾界面主執行緒會直接退出,還有RichEdit在Resize時會彈出Out of memory...的錯誤。
通過另外一臺機器遠程連接到本機上編譯BCB工程時,拖拽一下主視窗的位置,保存工程并退出BCB,然后重新打開工程再次執行編譯,生成的執行檔案大小為2.72M,比上述2.77M的版本要穩定得多。
比較了一下兩次編譯生成的obj檔案幾乎完全一樣,只有BCB安裝目錄下的vcl60.csm檔案內容相差甚遠。
求線索,遠程上來到底有啥不同~~~
uj5u.com熱心網友回復:
我覺的遠程或本地編譯本質上是相同的,因編譯設定的不同會產生一些區別。csm 檔案只是一個預編譯檔案,目的只是加快編譯速度,對編譯結果不會產生影響。
你描述的問題,應該是因多執行緒訪問應受保護的物件的同步問題,應該由開發者在編碼時考慮,和編譯器一點關系都沒有。
uj5u.com熱心網友回復:
還是檢查代碼,看有什么問題吧。uj5u.com熱心網友回復:
怎樣遠程編譯的?uj5u.com熱心網友回復:
看看是不是硬碟出問題了,我上次編譯的程式總是報記憶體錯誤,在虛擬機上編譯一下又正常。uj5u.com熱心網友回復:
將工程復制到那臺完成編譯的機器上看看效果如何轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/93042.html
標籤:VCL組件使用和開發
上一篇:C 中有函式 問題?????
