Deplhi 5 中的编译器指令 SETPEFlags
Compiler directive SETPEFlags in Deplhi 5
我有一个使用 Delphi 5.0 构建的应用程序,运行良好,没有任何问题。但是当 运行 大报告时,我的应用程序需要超过 2 Gb 的内存。经过分析发现,使用编译器指令 SETPEFlags 我们可以将 32 位应用程序内存增加到 4 GB。
我试图在 Delphi 5.0 的程序中进行设置,但出现错误 "Invalid Compiler Directive"。有人可以建议任何解决方法,而无需在其他版本中重建应用程序。或者添加到 Delphi 的哪个版本?
提前致谢。
您无法获得 Delphi 5 中的工具来将您的应用程序标记为 Large Address Aware({$SetPEFlags}
是在 Delphi 6 中添加的)。您需要将该 PE 标志添加为 post 构建设置。设置该标志的常用方法是使用 Microsoft 的 editbin
工具。
执行此操作后,一旦您分配的内存超出 2GB 边界,您的程序就会停止运行。那是因为默认的 Borland 内存管理器不支持大地址。您需要将其替换为 FastMM 或其他支持 LAA 的内存管理器。或者您可以编写自己的替代内存管理器,例如,如果您愿意,可以使用 HeapAlloc()
。
我有一个使用 Delphi 5.0 构建的应用程序,运行良好,没有任何问题。但是当 运行 大报告时,我的应用程序需要超过 2 Gb 的内存。经过分析发现,使用编译器指令 SETPEFlags 我们可以将 32 位应用程序内存增加到 4 GB。
我试图在 Delphi 5.0 的程序中进行设置,但出现错误 "Invalid Compiler Directive"。有人可以建议任何解决方法,而无需在其他版本中重建应用程序。或者添加到 Delphi 的哪个版本?
提前致谢。
您无法获得 Delphi 5 中的工具来将您的应用程序标记为 Large Address Aware({$SetPEFlags}
是在 Delphi 6 中添加的)。您需要将该 PE 标志添加为 post 构建设置。设置该标志的常用方法是使用 Microsoft 的 editbin
工具。
执行此操作后,一旦您分配的内存超出 2GB 边界,您的程序就会停止运行。那是因为默认的 Borland 内存管理器不支持大地址。您需要将其替换为 FastMM 或其他支持 LAA 的内存管理器。或者您可以编写自己的替代内存管理器,例如,如果您愿意,可以使用 HeapAlloc()
。