7

c ++ Builder xe5 [ilink32错误]错误:无法执行链接[ilink32警告]警告:检测到错误(LME288)

当我尝试在 windows xp 上编译测试项目 c++ builder xe5 时发生这种情况

4

10 回答 10

4

我从 Embarcadero 那里得到了一些这方面的信息,这可能会有所帮助。

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

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

致命:内存不足

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

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

“系统”,默认大小 0x08000000

“信息”,默认大小 0x0A000000

“代码”,默认大小 0x08000000

"rodata", 默认大小 0x06000000 //只读数据

“数据”,默认大小 0x08000000

“bss”,默认大小 0x08000000

“tds”,默认大小 0x0FA00000

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

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

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

于 2016-01-08T06:11:29.730 回答
2

我知道了。

我在 Windows 7x64 上使用西雅图 10 时遇到了同样的问题。我都试过了。您可以在 SO、EDN 等上找到的所有内容。我终于崩溃并使用了我的 Embarcadero 支持票,因为我根本无法再链接任何东西。经过我只能形容为 Embarcadero 的一位高级软件工程师的艰苦而勇敢的努力,我们终于偶然发现了这个修复:

首先,右键单击 ilink32.exe,选择属性,然后转到兼容性选项卡并勾选“以兼容模式运行此程序”复选框并选择 Windows XP SP3。在我的系统(64 位 Win7,运行西雅图 10)上,ilink32.exe 文件位于“C:\Program Files (x86)\Embarcadero\Studio\17.0\bin”中。

其次,通过右键单击 Builder 启动图标并选择“以管理员身份运行”来强制管理员权限(即使您已经是管理员)。

现在,打开您的项目并链接到您心中的内容!(您的结果可能会有所不同。)

于 2015-11-25T20:48:52.813 回答
1

我发现这个页面正在寻找同样的问题,对我来说解决方案是一个简单的技巧:

不要在项目中双击打开它(例如在 xxxx.cbproj 中双击),而是启动 ide 然后打开项目

解释?不知道,但现在链接正确。

于 2015-02-09T15:01:43.280 回答
1

我在这里遇到了同样的问题C++ Builder XE7 LME288 错误

我的解决方案很简单,可以清理所有临时文件。该错误似乎与损坏的临时文件有关。

于 2015-03-22T18:47:56.580 回答
1

我刚刚在 Windows 10 上遇到了 XE4 的这个问题 。Fvel让我走上了正轨。该问题是由使用 BDSLauncher.exe 而不是 bds.exe 打开的文件引起的。我将 .groupproj 的默认程序设置为 bds.exe,问题就消失了。

于 2015-09-23T21:02:32.717 回答
0

禁用 embarcadero bin 文件夹中 ilink32.exe 的防病毒保护软件,尤其是在使用 bitdefender 时。

于 2014-04-18T16:31:59.293 回答
0

对我来说,在 Windows 10 中,问题是因为没有分配足够的虚拟内存。解决问题的步骤:

  • 进入系统 > 高级系统设置 > 高级。
  • 在“性能”下,单击“设置”>“高级”
  • 在虚拟内存下单击“更改”
  • 确保当前分配的内存等于或大于推荐的内存。如果没有,请选择“自定义尺寸”并将初始尺寸设置为推荐尺寸,并将最大尺寸设置为更大的值。

另请参阅C++ Builder XE7 LME288 错误

于 2016-08-18T14:44:10.443 回答
0

这里给出的解决方案对我不起作用。我的解决方案是将 Windows 交换文件的大小设置为固定值(例如,最小值:1000 MB,最大值:10000)。重新启动后,我将单选按钮选中为“系统管理大小”并再次重新启动。现在我可以编译和链接,而不会出现任何链接器错误。但是几天后 LME 错误再次出现。然后我必须对交换文件执行相同的步骤来解决问题。

于 2015-08-31T06:29:06.547 回答
0

我在 RAD Studio XE7 / Windows 10 上遇到了相同的链接器问题 LME288。使用 CCleaner 清理临时文件修复了它。

编辑:问题不断出现,但另一次清理修复了它。

于 2018-08-28T06:08:44.920 回答
0

对我来说,当我在 XE7 中打开自动递增内部版本号时,问题就开始了。我已经工作了几个月的项目没有问题。该项目是由早期版本的 Builder 创建的。发生的第一个问题是编译器查找 windows.h 的问题,对于 rc 编译器也是如此。PATH 已由 Builder 更新为无效版本(也许这些来自早期的 Builder)。添加路径后,发生了LME288。切换自动增量内部版本号并删除所有临时文件后,它似乎又可以工作了。

于 2017-04-23T14:01:11.283 回答