完美解決Indy 編譯提示版本不一致的問題
1,起因
某delphi程序A使用了Indy9.0.18組件。機(jī)器中原本自帶老版本的Indy組件9.0.12,后升級到9.0.18,使用一直正常。
某次操作將程序A重新build all了一下,結(jié)果提示如下信息,此后即便是compile也會出錯。
[Fatal Error] uMain.pas(11): Unit IdServerIOHandlerSocket was compiled with a different version of IdServerIOHandler.TIdServerIOHandler
2,解決
顯然錯誤原因在于indy組件出現(xiàn)了交錯使用,應(yīng)將老版本的組件徹底刪除干凈。
先是重裝Indy組件9.0.12。將Delphi7\Source\Indy目錄下的文件用新版覆蓋,然后重新編譯。將生成的dcu拷貝到LIb目錄覆蓋。
結(jié)果問題依舊。
在delphi目錄下搜索id文件,發(fā)現(xiàn)Lib\Debug下有大量id*.dcu文件??赡苁沁@些文件是舊版的。
于是采用9.0.12的dcu文件將其覆蓋,再次rebuild程序A,通過!
3,分析
那么為什么會和“Lib\Debug”目錄有關(guān)呢? delphi IDE配置了搜索目錄“$(DELPHI)\Lib”,但并未配置使用Lib下的Debug目錄呀。
其實(shí)新編一個工程,放入indy新版組件組件,即使Lib\Debug下有舊版組件,rebuild也是不會出錯的。
分析發(fā)現(xiàn),這個“Lib\Debug”目錄和工程配置有關(guān)。原來,本人想要debug程序A,于是在工程選項(xiàng)中勾選了“Use Debug DCUs”

此選項(xiàng)將自動使用“Lib\Debug”目錄的dcu文件,而不是Lib目錄下的dcu。因?yàn)長ib目錄下的dcu文件中不含調(diào)試信息。
此時我們打開IDE的debugger選項(xiàng)窗口,可以發(fā)現(xiàn)IDE使用到了“Lib\Debug”目錄的dcu文件。

至此問題得到了解決,并且做到了“知其然且知其所以然”!
以上這篇完美解決Indy 編譯提示版本不一致的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
delphi簡單判斷程序30秒沒有鍵盤和鼠標(biāo)動作示例
本文為大家詳細(xì)介紹下delphi判斷程序30秒沒有鍵盤和鼠標(biāo)動作,這里給timer設(shè)置了1000ms)的參數(shù),表示30秒的間隔,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06
delphi實(shí)現(xiàn)將BMP格式圖形轉(zhuǎn)化為JPG格式圖形的方法
這篇文章主要介紹了delphi實(shí)現(xiàn)將BMP格式圖形轉(zhuǎn)化為JPG格式圖形的方法,通過簡單的自定義函數(shù)調(diào)用系統(tǒng)自帶的changefileext及SaveToFile等方法來實(shí)現(xiàn)格式轉(zhuǎn)換功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
Delphi實(shí)例演示Rect、Bounds生成TRect的區(qū)別
這篇文章主要介紹了Delphi實(shí)例演示Rect、Bounds生成TRect的區(qū)別,需要的朋友可以參考下2014-07-07
Delphi實(shí)現(xiàn)圖片滾動切換的完整實(shí)例代碼
這篇文章主要介紹了Delphi實(shí)現(xiàn)圖片滾動切換的完整實(shí)例代碼,通過本實(shí)例,讀者可以進(jìn)一步掌握Delphi控件及圖形處理的技巧,需要的朋友可以參考下2014-07-07
delphi mysql adbquery數(shù)據(jù)提供程序或其他服務(wù)返回 E_FAIL 狀態(tài)
這篇文章主要介紹了delphi mysql adbquery數(shù)據(jù)提供程序或其他服務(wù)返回 E_FAIL 狀態(tài)的解決方法2013-11-11

