C++ Builder XE7 LME288错误

Max*_*and 31 c++builder linker-errors windows-7-x64 c++builder-xe7

突然,突然之间,我得到了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
Run Code Online (Sandbox Code Playgroud)

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

  • 增量链接器禁用/启用,没有区别......
  • 手动删除/ debug中的所有文件,仍然没有变化......
  • 完全构建,没有区别......
  • 重启电脑,没有变化......

这已经在之前提出过,但没有提出真正的解释或解决方案.

我还能做些什么来解决这个问题?

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

cir*_*314 21

注意:随着2017年4月的C++ Builder的10.2东京版本,Embarcadero升级了链接器,显然解决了这个问题(我还没有测试过):"链接器现在可以识别大地址,并且可以在64位上解决高达4GB的问题比特系统,是之前数量的两倍.(有些客户过去通过切换PE头中的位来攻击链接器为LAE [原文如此];因为代码没有写入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东京的链接器仍然无法解决问题: https ://quality.embarcadero.com/browse/RSP-12869

但仍然有希望:从10.2东京开始,你有一些新的选项来控制LARGEADDRESSAWARE和链接器堆大小.Dieter Woellner 于2017年10月26日报道了暂时设置C++ - Linker | 高级| "-GF:LARGEADDRESSAWARE"的高级选项条目消除了该问题.但问题又回来了,他发现如果你将TDS Heapsize设置为低于0x08000000的值,你可以避免链接错误/崩溃......现在.

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

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

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

我通过设置/LARGEADDRESSAWARE标志来解决问题ilink32.exe.原始解决方案来自Hiroyuki Shimada,使用editbin,并于2016年1月12 日在http://qc.embarcadero.com/wc/qcmain.aspx?d=134775发布.他也把它用于bcc32.exe; 我不需要.

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

要使用其中任何一个,请ilink32.exe在您的RAD Studio二进制文件目录中重命名(例如,C:\Program Files (x86)\Embarcadero\Studio\17.0\bin对于RAD Studio Seattle或...\18.0\bin柏林),并将其复制到其位置,将其重命名为ilink32.exe.

[注意:这些/ LAA链接器解决了许多问题,但不是所有用户; 请参阅2016年7月25日的@Andrew Legget发表的帖子: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工具设置Large Address Aware标志,可从以下网址下载:http://cc.embarcadero.com/Item/30459(感谢Doug Hay,19/Jul/16发表于https://quality.embarcadero.com/browse/RSP-13247):

    lamarker -M -Filink32.exe

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

- 要么 -

  1. 使用editbinMS Visual Studio中,如果您已经有这样的安装(即微软要求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.exe

    editbin /LARGEADDRESSAWARE ilink32.exe

- 要么 -

  1. 设置使用较大的地址标志editbinMASM32包:

http://www.masm32.com/download.htm下载,创建c:\masm32\bin\editbin.exe.在MASM32安装过程中我收到了一些警告(涉及序号201和203),但是它的自检通过了,而我所需要的只是editbin.exe.

  • 在你的情况下,你真的遇到了大文件问题?其他一些拥有LME288的人只有小项目,错误确实似乎是由于临时文件损坏或严重许可造成的; 所以也许相同的错误代码用于两个完全不同的问题. (2认同)
  • 我只想告诉你,你的公共服务并没有得到很好的尊重 - 你从这场噩梦中拯救了我们一群人,谢谢! (2认同)

小智 13

我在Windows 10上安装了RAD Studio XE8时遇到了这个问题.当安装在Windows 7(x86)上时,RAD Studio XE8正常工作.

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

经过网上的一点研究,我找到了解决方案.ilink32.exe存在内存问题,您需要在计算机启动时启用3GB内存空间.如果再次显示此错误,以下是我现在所做的事情:

  1. 以Administrator身份运行命令提示符
  2. 输入(不含引号)"bcdedit/set IncreaseUserVa 3072"
  3. 重新启动计算机.

这样做之后,ilink32正常工作.

我发现在安装较新版本的Acronis True Image(2016)后,LME288错误又回来了.但是在这里运行bcdedit解决方案,它修复了RAD Studio XE8链接器!