c ++ Builder xe5 [ilink32错误]错误:无法执行链接[ilink32警告]警告:检测到错误(LME288)
当我尝试在 windows xp 上编译测试项目 c++ builder xe5 时发生这种情况
c ++ Builder xe5 [ilink32错误]错误:无法执行链接[ilink32警告]警告:检测到错误(LME288)
当我尝试在 windows xp 上编译测试项目 c++ builder xe5 时发生这种情况
我从 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 错误。
我知道了。
我在 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 启动图标并选择“以管理员身份运行”来强制管理员权限(即使您已经是管理员)。
现在,打开您的项目并链接到您心中的内容!(您的结果可能会有所不同。)
我发现这个页面正在寻找同样的问题,对我来说解决方案是一个简单的技巧:
不要在项目中双击打开它(例如在 xxxx.cbproj 中双击),而是启动 ide 然后打开项目。
解释?不知道,但现在链接正确。
我在这里遇到了同样的问题C++ Builder XE7 LME288 错误
我的解决方案很简单,可以清理所有临时文件。该错误似乎与损坏的临时文件有关。
我刚刚在 Windows 10 上遇到了 XE4 的这个问题 。Fvel让我走上了正轨。该问题是由使用 BDSLauncher.exe 而不是 bds.exe 打开的文件引起的。我将 .groupproj 的默认程序设置为 bds.exe,问题就消失了。
禁用 embarcadero bin 文件夹中 ilink32.exe 的防病毒保护软件,尤其是在使用 bitdefender 时。
对我来说,在 Windows 10 中,问题是因为没有分配足够的虚拟内存。解决问题的步骤:
这里给出的解决方案对我不起作用。我的解决方案是将 Windows 交换文件的大小设置为固定值(例如,最小值:1000 MB,最大值:10000)。重新启动后,我将单选按钮选中为“系统管理大小”并再次重新启动。现在我可以编译和链接,而不会出现任何链接器错误。但是几天后 LME 错误再次出现。然后我必须对交换文件执行相同的步骤来解决问题。
我在 RAD Studio XE7 / Windows 10 上遇到了相同的链接器问题 LME288。使用 CCleaner 清理临时文件修复了它。
编辑:问题不断出现,但另一次清理修复了它。
对我来说,当我在 XE7 中打开自动递增内部版本号时,问题就开始了。我已经工作了几个月的项目没有问题。该项目是由早期版本的 Builder 创建的。发生的第一个问题是编译器查找 windows.h 的问题,对于 rc 编译器也是如此。PATH 已由 Builder 更新为无效版本(也许这些来自早期的 Builder)。添加路径后,发生了LME288。切换自动增量内部版本号并删除所有临时文件后,它似乎又可以工作了。