【问题标题】:c++ Builder xe5 Error detected (LME288)检测到 c++ Builder xe5 错误 (LME288)
【发布时间】:2014-05-31 05:07:16
【问题描述】:

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

当我试图编译一个测试项目时发生的 c++ builder xe5 on windows xp

【问题讨论】:

标签: c++builder compiler-warnings c++builder-xe5


【解决方案1】:

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

错误是“内存不足”,错误。 “内存不足”的原因 链接器中的错误(以不同的形式出现)是链接器 必须在连续堆中预先分配内存,然后将其用作它 链接,过去这些堆无法调整,我们必须做到最好 猜测,所以在新的 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

致命:内存不足

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

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

“系统”,默认大小0x08000000

“信息”,默认大小0x0A000000

“代码”,默认大小0x08000000

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

“数据”,默认大小0x08000000

"bss",默认大小0x08000000

“tds”,默认大小0x0FA00000

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

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

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

【讨论】:

    【解决方案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 启动图标并选择“以管理员身份运行”来强制管理员权限(即使您已经是管理员)。

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

            • 这不是防病毒问题.. 那台机器上没有安装防病毒软件
            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

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

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

              另见C++ Builder XE7 LME288 Error

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                  【解决方案10】:

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

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

                  【讨论】:

                    猜你喜欢
                    • 2015-07-05
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-02-17
                    • 2015-05-30
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多