3

即使我以管理员身份运行 IDE,编译器也会给我一个错误(如图所示)。任何人都可以帮助解决问题吗?

Rad Studio XE8 错误

4

1 回答 1

2

您的链接器正在尝试分配 128 MB 的内存。Embarcadero 的以下信息最近发布在 Embarcadero 论坛上:

在西雅图 10 更新 1 中检测到错误 (LME288)

该错误是“内存不足”错误。链接器中“内存不足”错误(以不同的形式出现)的原因是链接器必须在连续堆中预先分配内存,然后在链接时使用这些内存,过去这些堆无法调整,我们必须做一个最好的猜测,所以在新的 64 位链接器(也已添加到 32 位链接器)中,我们允许人们在需要时手动调整这些堆的大小. 现在这些堆可能出现问题的原因是并非所有系统都是相同的,有些人使用不同的软件将 DLL 映射到链接器的地址空间,如 Windows Hook DLL,所有这些 DLL 的防病毒软件都在链接器的内部分配内存(任何应用程序真的) 地址空间,因此对链接器可以分配的堆大小有影响。所以我们添加了手动调整堆的能力,但我们也分配了相当大的初始堆。

32 位链接器有一个新的开关 -GH,见下文,它类似于 ilink64 开关。

开关的语法是:

-GH=”

这个选项 -GH 从 XE3 Update 1 开始就存在,但显然没有记录?

要查看哪个堆内存不足,您可以从命令行尝试。

MSBuild /p:Platform=Win32 /v:diag XXXX.cbproj

这提供了额外的信息,例如:

链接器堆上的溢出:代码

链接器堆


信息 0x002d0000 0x0a000000

代码 0x000d0000 0x00100000

数据 0x00030000 0x08000000

bss 0x08000000 0x08000000

致命:内存不足

上面输出的左侧是当前使用的字节数,右侧是分配给特定命名堆的字节数。

链接器在启动时分配的默认堆大小为:

"system", default size 0x08000000
"info", default size 0x0A000000
"code", default size 0x08000000
"rodata", default size 0x06000000 //readonly data
"data", default size 0x08000000
"bss", default size 0x08000000
"tds",默认大小 0x0FA00000

当您看到“未知堆”时,这通常是“tds”堆

将 tds 堆从 0x0FA00000 调整为 0x0A000000 的示例,您将执行 -GHtds=0x0A000000

希望这些信息可以帮助您和其他人解决 LME288 错误。

-GH您可以在项目选项中为链接器指定其他标志,例如。

于 2016-01-11T21:02:34.353 回答