簡體   English   中英

使用FastMM4和Indy 10

[英]Using FastMM4 and Indy 10

這與IndyRegisterExpectedMemoryLeak()函數和FastMM4有關。

IdCompilerDefines.incSystem文件夾中,我定義USE_FASTMM4 ,編譯器錯誤IdGlobal.pas如下:

[Error]IdGlobal.pas[2203] Declaration of 'GetBytes' defers from declaration in interface 'IIdTextEncoding' 
[Error]IdGlobal.pas[2203] Declaration of 'GetCharCount' defers from declaration in interface 'IIdTextEncoding'
[Error]IdGlobal.pas[2203] Declaration of 'GetChars' defers from declaration in interface 'IIdTextEncoding'

等等。

如果我沒有定義USE_FASTMM4 ,那么它告訴我在此行中未定義FastMM4:

Result := FastMM4.RegisterExpectedMemoryLeak(AAddress);

首先,如果對IdCompilerDefines.inc進行了更改,則必須對SystemCoreProtocols文件夾中的IdCompilerDefines.inc所有三個副本進行相同的更改(之所以要復制三個副本,原因與FreePascal的較早版本阻止了Indy在其各個軟件包之間共享一個IdCompilerDefines.inc

其次,FastMM4被並入Delphi 2006的RTL中,該版本與引入System.RegisterExpectedMemoryLeak()函數的版本相同。 您不應在2006年及更高版本中定義USE_FASTMM4 讓Indy使用System.RegisterExpectedMemoryLeak()以便它可以委派給運行時實際使用的任何內存管理器。 在早期版本中,可以通過定義USE_FASTMM4來安裝完整版本的FastMM4並重新編譯Indy以使用它。 即使這樣,當USE_FASTMM4時,也不應在FastMM4.RegisterExpectedMemoryLeak()行上出現錯誤,因為僅在定義USE_FASTMM4時才編譯該行。

第三,您所顯示的錯誤消息均與FastMM4或USE_FASTMM4定義USE_FASTMM4 提到IIdTextEncoding的事實告訴我您正在使用Indy 10.6.0 SVN修訂版4990或更高版本(在撰寫本文時,當前的SVN修訂版是5302),但是自該發行版以來,沒有任何與FastMM相關的更改。 。 因此,必須采取其他措施來導致那些與FastMM4不相關的錯誤。

報告問題之前,請始終確保使用絕對最新版本。 如果最新版本中有錯誤,則可以修復。 如果早期版本中存在錯誤,則可能已在更高版本中修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM