在RAD Studio XE8中进行编译时出现“无法执行链接”错误

时间:2016-01-05 15:54:08

标签: c++builder c++builder-xe

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

Rad Studio XE8 error

1 个答案:

答案 0 :(得分:2)

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

Error detected (LME288) in Seattle 10 update 1

  

错误是“内存不足”,错误。 “记忆力不足”的原因   链接器中的错误(以不同的形式出现)是链接器   必须在连续的堆中预先分配内存,然后将其用作它   链接,在过去这些堆不能调整,我们必须做到最好   猜测,所以在新的64位链接器中(并且还被添加到32位   链接器)我们允许人们手动调整这些堆的大小   当他们需要时。现在这些堆可能成为问题的原因是   并非所有系统都相同,有些人使用不同的软件进行映射   DLL进入链接器的地址空间,如Windows Hook DLLs,杀毒软件   软件所有这些DLL分配内存INSIDE链接器(任何应用程序   真的)地址空间,因此对堆的大小有影响   链接器可以分配。所以我们添加了这种手动调整堆的能力,   但我们也分配了最初的堆。

     

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

     

交换机的语法是:

     

-GH =“

     

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

     

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

     

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

     

这提供了其他信息,例如:

     

链接器堆上的溢出:代码

     

Linker Heaps

           

info 0x002d0000 0x0a000000

     

代码0x000d0000 0x00100000

     

数据0x00030000 0x08000000

     

bss 0x08000000 0x08000000

     

致命:内存不足

     

上面输出的左侧是在的字节数   时刻和右边为特定命名分配的字节数   堆。

     

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

     

“system”,默认大小0x08000000
  “info”,默认大小0x0A000000
  “代码”,默认大小0x08000000
  “rodata”,默认大小0x06000000 //只读数据
  “数据”,默认大小0x08000000
  “bss”,默认大小0x08000000
  “tds”,默认大小为0x0FA00000

     

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

     

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

     

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

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