混用VC和BCB的思考

2021-08-22 02:04:13 字數 783 閱讀 8917

做為公司的技術總監,我可以決定開發工具的選擇,同時也必須承擔我的決定所引發的結果.

無論是visual c++, c++ builder,還是delphi,能夠在ide市場存活至今,必然都是非常優秀的。如果能夠將它們結合在一起是否可以擁有更強大的開發效率呢?在這個問題上,我相信仁者見仁,智者見智。但根據我多年的工程實踐,我所得出的結論是:盡量使用單一的開發工具。

公司裡最初的幾個技術骨幹,都是和我一樣從turbo c時代過來的,後來直接轉向的vc+mfc,所以最初的程式都是使用vc開發的。後來,公司陸續加入了一些新人,由於mfc的培訓成本很高,於是我決定一部分介面採用bcb進行開發,這樣新人入門比較容易,且能夠加快開發進度。具體做法跟現在很多論壇上討論的做法差不多:使用bcb開發介面;使用vc開發核心邏輯,封裝成動態庫供bcb呼叫。

在最初的一段時間裡,這樣做的結果看上去還不錯,充分發揮了兩個ide的長處。問題就出現在c++編譯器在二進位制層的不相容上。為了使得bcb可以順利的呼叫vc的dll, 我們不得不將匯出函式封裝成標準c函式。隨著系統的日益複雜,標準c介面阻斷了整個軟體框架的oo特性。所有stl型別的物件,均無法通過標準c介面在gui與kernel之間傳遞。於是,為了傳遞這樣的資料,(比如list,map,最多的是string,作為函式返回時最麻煩),我們不得不用c方式自己去實現。這樣,逐漸發現bcb在gui所帶來的便利,已經完全被介面所帶來的不利所抵消,同時破壞了整個系統的架構。

在2023年到2023年長達6中,我一直尋求各種方案來解決上述矛盾。最終,我決定徹底放棄bcb. 以前使用bcb開發的大量**,我需要承受重寫的代價,這無疑是軟體公司在策略上最壞的錯誤。

BCB呼叫VC的DLL(補充)

之前的博文 講到了bcb如何呼叫vc編譯的dll,做一下補充。有時vc編譯dll後,用coff2omf把它的lib檔案轉換成bcb的lib還是無法使用,原因是bcb要求lib中的c函式名要有下劃線開頭,而vc有時設定編譯時匯出的函式沒有以下劃線開頭,所以bcb鏈結時會提示沒有這些函式。解決辦法是用i...

有符號數和無符號數混用的思考

參考文章 1 c語言中無符號數和有符號數之間的運算 2 負數在計算機中怎樣儲存 3 二進位制減法 原碼 10進製轉換成2進製是原碼,只不過正數的原碼是本身符號位為0,負數的原碼符號位為1 以下篇幅均以單位元組為例 10進製1的原碼是0000 0001,10進製 1的原碼是1000 0001 反碼 正...

C C和C 的混用

c和c 語法上有很多相同的地方,但是兩種語言混合程式設計是有問題的。例如,在c中,函式set被編譯器翻譯成 set,就是說在鏈結查抄是,使用的是 set這個名字找到的set函式。而c 中,由於函式過載特性,編譯器在函式名的翻譯中,需要使用函式具體使用的引數型別,例如set int 函式,會被翻譯成 ...