gpt4 book ai didi

linker-errors - 如何解决 “LME288/Unknown heap name”警告?

转载 作者:行者123 更新时间:2023-12-03 08:55:37 25 4
gpt4 key购买 nike

突然,我突然发现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错误。

    最佳答案

    2020年1月15日,Embarcadero将RSP-12869的状态从“需要反馈”更改为“开放”,并将其分配给Internal Dev。

    较早的历史:
    随着2017年4月东京10.2版C++ Builder的发布,Embarcadero升级了链接器,声称可以解决该问题:“该链接器现在可以识别大地址,并且在64位系统上可以寻址多达4GB,是以前的两倍。(过去,有些客户通过切换PE header 中的位来将链接器黑客化为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的链接器仍然无法解决问题:RSP-12869。同样,@ Ultralisk在下面的2020-01-09评论中报告了相同的问题。

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

    ====================================

    我是那些将链接器砍成LAA,从而干扰了增量链接(我不需要)并解决了我的问题的客户之一。如果不需要增量链接,请继续阅读。

    ====================================

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

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

  • 西雅图RAD Studio 10:
    https://s3.amazonaws.com/public-mfay/ilink32.exe
  • 柏林RAD Studio 10.1:https://s3.amazonaws.com/public-mfay/ilink32-10.1.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的方式,请阅读以下内容...

  • 使用 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)

    - 要么 -
  • 如果已经安装了,请使用 MS Visual Studio 中的editbin(Microsoft声称editbin必须在IDE中运行)。作为第一步,请复制bcc32.exeilink32.exe以防止UAC被阻止(并备份它们)
    copy "C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin\bcc32.exe" .copy "C:\Program Files (x86)\Embarcadero\RAD Studio\12.0\bin\ilink32.exe" .editbin /LARGEADDRESSAWARE bcc32.exeeditbin /LARGEADDRESSAWARE ilink32.exe

  • - 要么 -
  • 使用 masm32 软件包中的editbin设置“大地址感知”标志:

  • http://www.masm32.com/download.htm下载,它创建c:\masm32\bin\editbin.exe。在安装MASM32时,我得到了一些警告(涉及到201和203),但它的自检通过了,我只需要editbin.exe即可。

    关于linker-errors - 如何解决 “LME288/Unknown heap name”警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28929516/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com