如何解决“ LME288 /未知堆名”警告?

问题描述 投票:31回答:14

突然,我突然发现LME288链接器错误。

[ilink32 Warning] Warning: D:/Projects/TrainFever Game Manager/TFGM/Win32/Debug/TFGameManager.ilc: 0x00010000 / 0x08000000
[ilink32 Warning] Warning: D:/Projects/TrainFever Game Manager/TFGM/Win32/Debug/TFGameManager.ild: 0x00010000 / 0x08000000
[ilink32 Warning] Warning: D:/Projects/TrainFever Game Manager/TFGM/Win32/Debug/TFGameManager.ilf: 0x00010000 / 0x0a000000
[ilink32 Warning] Warning: D:/Projects/TrainFever Game Manager/TFGM/Win32/Debug/TFGameManager.ils: 0x0003b000 / 0x08000000
[ilink32 Warning] Warning: unknown heap name   : 0x08000000 / 0x08000000
[ilink32 Warning] Warning: Error detected (LME288)
[ilink32 Error] Error: Unable to perform link

我没有安装AV,该项目已经运行了一年多。我尝试过:

  • 增量链接器已禁用/启用,没有区别...
  • 手动删除/ debug中的所有文件,仍然没有更改...
  • 完整版本,没有区别...
  • 重新启动计算机,无更改...

here之前曾被问过,但没有给出真正的解释或解决方案。

我还能做什么解决此问题?

编辑我试图重建几个运行良好多年的其他项目,现在我所有项目都收到LME288错误。

linker-errors c++builder windows-7-x64 c++builder-10.2-tokyo c++builder-xe7
14个回答
21
投票
注:在2017年4月发布的东京10.2版C ++ Builder中,Embarcadero升级了链接程序,显然可以解决此问题(我尚未测试过):“该链接程序现在可以识别大地址,并且可以寻址多达4GB在64位系统上,是以前数量的两倍。(过去,有些客户通过切换PE标头中的位来将链接器黑客化为LAE [sic];因为该代码并未被编写为可识别LAE的)阻止增量链接,有时阻止其他功能正常运行。)“ https://community.embarcadero.com/blogs/entry/what-s-new-in-c-builder-10-2-part-1-the-linker

但是,在2017年5月24日,Ashleigh Quick报告10.2 Tokyo的链接器仍不能解决问题: https://quality.embarcadero.com/browse/RSP-12869。同样,@ Ultralisk在下面的2020-01-09评论中报告了相同的问题。

但是仍然有希望:从东京10.2开始,您有了一些新的选项来控制LARGEADDRESSAWARE和链接器堆大小。 Dieter Woellner reported on 26-Oct-2017暂时设置了C ++-Linker |进阶| “ -GF:LARGEADDRESSAWARE”的“高级选项”条目消除了该问题。但是问题又回来了,他发现如果将TDS堆大小设置为小于0x08000000的值,就可以避免链接时出现错误/崩溃。

=====================================>我是将链接器黑客攻击为LAA,从而干扰了增量链接(我不需要)并解决了我的问题的客户之一。如果您打算继续使用10.1或更早版本中的链接器,并且不需要增量链接,请继续阅读。

=====================================>

我通过在/LARGEADDRESSAWARE中设置ilink32.exe标志解决了该问题。原始解决方案来自岛田裕之,使用editbin,并于2016年1月12日发布在http://qc.embarcadero.com/wc/qcmain.aspx?d=134775。他还将其应用于bcc32.exe;我不需要。

作为一项公共服务,我在这里发布了修补的ilink32.exe版本:

RAD Studio 10 Seattle:https://s3.amazonaws.com/public-mfay/ilink32.exe

  • [要使用两者之一,请在RAD Studio二进制文件目录中重命名ilink32.exe(例如,对于RAD Studio Seattle,为C:\Program Files (x86)\Embarcadero\Studio\17.0\bin,对于柏林,为...\18.0\bin),然后复制我的位置,将其重命名为ilink32.exe。] >
  • [注:这些/ LAA链接程序为许多(但不是全部)用户解决了问题;参见@Andrew Legget在2016年7月25日发布的帖子,位于https://quality.embarcadero.com/browse/RSP-13247]

    此问题已经存在很长时间了,不仅限于XE3,XE5,XE7,XE8 ... https://quality.embarcadero.com/browse/RSP-13247上有很长的讨论/哀叹,关于为什么在RAD Studio的一个版本中解决了这个问题但在更高版本中退出; / LAA显然是“与静态RTL增量链接时导致失败”。根据Dennis Jones在该线程中发布的28 / Mar / 16 12:14 PM,该/ LAA修补程序无法解决其他链接器错误“ EXE1825”或“内存不足”。

  • 如果您想了解三种修补ilink32.exe的方式,请阅读以下内容...


      使用
    1. lamarker工具设置大地址感知标志,可从以下位置下载:http://cc.embarcadero.com/Item/30459(感谢Doug Hay,https://quality.embarcadero.com/browse/RSP-13247中的19 / Jul / 16帖子):

      lamarker -M -Filink32.exe

      ((您可以直接在C:\Program Files (x86)\Embarcadero\Studio\17.0\bin(或...\18.0\bin)目录中执行此操作;如果有权限,它将把原始ilink32.exe重命名为ilink32.exe.old

      -或-

        使用
      1. MS Visual Studio]中的editbin,如果您已经安装了这样的文件(Microsoft声称editbin必须在IDE中运行)。作为第一步,请复制bcc32.exeilink32.exe以防止UAC被阻止(并对其进行备份)

        copy "C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin\bcc32.exe" .

      2. copy "C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin\ilink32.exe" .

      editbin /LARGEADDRESSAWARE bcc32.exe

      editbin /LARGEADDRESSAWARE ilink32.exe

      -或-

      使用

        masm32包中的editbin设置大地址感知标志:
      1. http://www.masm32.com/download.htm下载,创建c:\masm32\bin\editbin.exe。在安装MASM32的过程中,我收到了一些警告(涉及普通代码201和203),但它的自检通过了,我需要的只是editbin.exe

      我在Windows 10上安装RAD Studio XE8时也遇到了这个问题。在Windows 7(x86)上安装时,RAD Studio XE8正常工作。
      升级到Windows 10(x86)后,我遇到了可怕的未知堆LME288错误。起初它没有出现在Windows 10上,但是如果我安装了某些东西,它将弹出。如果我将计算机还原到Windows 7,它将消失。

      经过一番网上研究后,我找到了解决方案。 ilink32.exe出现内存问题,您需要在计算机启动时启用3GB内存空间。如果再次出现此错误,这是我现在要执行的操作:

      以管理员身份运行命令提示符。

        类型(不带引号)“ bcdedit / set GrowthUserVa 3072”
    2. 重新启动计算机。
  • 完成之后,ilink32可以正常工作。
  • 我发现在安装了较新版本的Acronis True Image(2016)之后,LME288错误又回来了。但是在这里运行bcdedit解决方案时,它修复了RAD Studio XE8链接器!!
  • 我发现了一种似乎可行的解决方法。
    似乎与损坏的临时文件有关。在对系统磁盘进行“磁盘清理”后,我设法使其再次工作。

    我删除了列表中的所有文件(已选中所有复选框),以及“清理系统文件”

    之后,即使不重新启动,我也可以编译和链接。甚至增量链接也重新开始工作!

    仅以管理员身份运行XE8即可为我修复。

    作为Drewski,升级到Windows 10(x64)后我遇到LME288错误。
    更改ilink32.exe

    数据执行保护设置

    后,错误消失了>]

    系统属性->高级系统设置->性能->设置->数据执行保护

      为我选择的所有程序和服务都打开DEP-> ilink32.exe
  • 就我而言,尝试这里提到的所有其他选项根本没有用。
    似乎没用的技巧是在Windows 10计算机的系统设置中手动设置虚拟内存量。它被设置为由操作系统自动管理,但是将其更改为手动值(即使最小值小于自动分配的值,并且它是实际使用的值)也使链接器再次工作。

    在我的情况下,操作系统分配了大约1600 Mb。我将最小值设置为1,024,将最大值设置为3,072,重新启动,现在链接器工作正常。使用的数量为1,024(即使建议值约为1,900,也是如此)。

    我有一个不同的解决方案,希望可以帮助遇到此问题的人。
    我尝试了所有方法,之前提出的所有解决方案都没有对我起作用。磁盘清理无济于事。显然,这是C ++ Builder中存在的错误,已经存在很多年了,甚至到2015年XE8都没有修复。

    幸运的是,我有一台具有工作环境的计算机,同一项目在该计算机上进行了编译。我从该计算机的输出目录(Win32 / Debug)中将所有文件(* .exe,*。obj等)复制到了我遇到问题的那个目录,这神奇地使C ++ Builder正常运行。之后所有版本开始工作。

    已通过Bitdefender IS 2016修复为XE10和Windows 10(x64):
    Bitdefender->模块->防病毒->排除->排除的进程->添加“ ... \ bin \ ilink32.exe”->允许

    重新启动W10在XE5上解决了此问题但我正在停用增量构建

    我们有相同的问题,并通过增加Windows的虚拟内存来解决(它非常低,只有800Mo,现在大约是4 Go)

    我通过确保从所有防病毒扫描中排除Embarcadero安装文件夹(例如C:\ Program Files(x86)\ Embarcadero)来解决此问题。

    Windows 10(x64),Rad Studio XE柏林(启用增量链接)。
    我通过排除防病毒Window Defender扫描中的“

    C:\ Program Files(x86)\ Embarcadero \ bin

    ”。

    使用BDSSetLang.exe将IDE语言从法语更改为英语为我解决了LME288错误!

    解决方案非常简单:windows PATH环境变量超过了其限制的2047个字节。
    请在此处查看我的描述:http://blog.bitart.at/lme288/[德语]

    编辑:我的“解决方案”仅持续了几个月。安装Microsoft Visual Studio之后,问题返回。

    如另一个答案中所述:用以下方法修补ilink32.exe:>

    lamarker -M -Filink32.exe

    似乎是正确的解决方案。


  • 0
    投票

    0
    投票

    0
    投票

    0
    投票

    0
    投票
    请在此处查看我的描述:http://blog.bitart.at/lme288/[德语]

    编辑:我的“解决方案”仅持续了几个月。安装Microsoft Visual Studio之后,问题返回。

    如另一个答案中所述:用以下方法修补ilink32.exe:>

    lamarker -M -Filink32.exe


    13
    投票
    升级到Windows 10(x86)后,我遇到了可怕的未知堆LME288错误。起初它没有出现在Windows 10上,但是如果我安装了某些东西,它将弹出。如果我将计算机还原到Windows 7,它将消失。

    经过一番网上研究后,我找到了解决方案。 ilink32.exe出现内存问题,您需要在计算机启动时启用3GB内存空间。如果再次出现此错误,这是我现在要执行的操作:

    以管理员身份运行命令提示符。

      类型(不带引号)“ bcdedit / set GrowthUserVa 3072”

    4
    投票
    似乎与损坏的临时文件有关。在对系统磁盘进行“磁盘清理”后,我设法使其再次工作。

    我删除了列表中的所有文件(已选中所有复选框),以及“清理系统文件”

    之后,即使不重新启动,我也可以编译和链接。甚至增量链接也重新开始工作!


    4
    投票

    作为Drewski,升级到Windows 10(x64)后我遇到LME288错误。
    更改ilink32.exe

    数据执行保护设置

    后,错误消失了>]

    系统属性->高级系统设置->性能->设置->数据执行保护

      为我选择的所有程序和服务都打开DEP-> ilink32.exe

    3
    投票
    更改ilink32.exe

    数据执行保护设置


    2
    投票
    似乎没用的技巧是在Windows 10计算机的系统设置中手动设置虚拟内存量。它被设置为由操作系统自动管理,但是将其更改为手动值(即使最小值小于自动分配的值,并且它是实际使用的值)也使链接器再次工作。

    在我的情况下,操作系统分配了大约1600 Mb。我将最小值设置为1,024,将最大值设置为3,072,重新启动,现在链接器工作正常。使用的数量为1,024(即使建议值约为1,900,也是如此)。

    我有一个不同的解决方案,希望可以帮助遇到此问题的人。
    我尝试了所有方法,之前提出的所有解决方案都没有对我起作用。磁盘清理无济于事。显然,这是C ++ Builder中存在的错误,已经存在很多年了,甚至到2015年XE8都没有修复。

    幸运的是,我有一台具有工作环境的计算机,同一项目在该计算机上进行了编译。我从该计算机的输出目录(Win32 / Debug)中将所有文件(* .exe,*。obj等)复制到了我遇到问题的那个目录,这神奇地使C ++ Builder正常运行。之后所有版本开始工作。

    已通过Bitdefender IS 2016修复为XE10和Windows 10(x64):
    Bitdefender->模块->防病毒->排除->排除的进程->添加“ ... \ bin \ ilink32.exe”->允许

    重新启动W10在XE5上解决了此问题但我正在停用增量构建

    我们有相同的问题,并通过增加Windows的虚拟内存来解决(它非常低,只有800Mo,现在大约是4 Go)

    我通过确保从所有防病毒扫描中排除Embarcadero安装文件夹(例如C:\ Program Files(x86)\ Embarcadero)来解决此问题。

    Windows 10(x64),Rad Studio XE柏林(启用增量链接)。
    我通过排除防病毒Window Defender扫描中的“

    C:\ Program Files(x86)\ Embarcadero \ bin

    ”。

    使用BDSSetLang.exe将IDE语言从法语更改为英语为我解决了LME288错误!


    1
    投票

    1
    投票
    Bitdefender->模块->防病毒->排除->排除的进程->添加“ ... \ bin \ ilink32.exe”->允许

    1
    投票
    最新问题
    © www.soinside.com 2019 - 2024. All rights reserved.