如何修复"LME288/未知堆名称"警告?

32

突然间,我收到了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 中的所有文件,仍然没有变化……
  • 进行完整构建,没有变化……
  • 重启电脑,没有变化……

这个问题之前在这里被问到过,但是没有给出真正的解释或解决方案。

还有什么可以做来解决这个问题吗?

编辑:
我试图重新构建其他几个已经运行良好多年的项目,现在所有项目都出现 LME288 错误。


1
这个问题多年来已经被报告给QualityCentral多次:#102099#106085#109265 - Remy Lebeau
1
所有三份报告都没有任何解决方案或解决方法就被关闭了。我怀疑这个问题与项目无关。有一个人甚至重新安装了Builder,但仍然有这个问题。肯定是某些缓存文件被损坏了。我正在清理我的所有临时文件夹,看看是否有所帮助。 - Max Kielland
1
我清理了磁盘上的所有临时文件,清空了回收站,现在它又可以正常工作了。 - Max Kielland
1
@MaxKielland,最后一条评论建议类似的修复方法QC 102099。如果这足以成为线索,QC尝试解决问题会很好。 - M.M
2
这个Builder中的错误让我非常愤怒。我已经与Embarcadero支持团队进行了大量交流,试图找出问题的根源。所有的问题都始于在Windows 10上使用XE7,一路上有几件事情为我解决了短时间内的问题。安装XE8修复了XE7的问题。通过删除非版本控制文件来清理我的项目。然而,给我带来最大改善的一件事(几个月来一直很好,直到今天),是在我的PC上创建一个新用户帐户。现在我坐在这里,对我浪费的时间感到愤怒,因为这个错误,我再也不会自愿使用Builder了。 - Phil Williams
显示剩余4条评论
19个回答

0

解决方案非常简单:Windows PATH 环境变量超过了 2047 字节的限制。

请参见我的描述: http://blog.bitart.at/lme288/ [德语]

编辑:我的“解决方案”只持续了几个月。安装 Microsoft Visual Studio 后问题又出现了。

如另一个答案所述:使用以下命令修补 ilink32.exe

lamarker -M -Filink32.exe

似乎是正确的解决方案。


0

Windows 10(x64),Rad Studio XE Berlin(启用增量链接)。

我通过将"C:\Program Files (x86)\Embarcadero\bin"从防病毒软件Windows Defender的扫描排除中解决了问题。


0
很难相信你们都有需要增加堆大小的项目... 当我重新安装所有附加组件(Fastreport/Devexpress等)没有调试信息后,我的所有LME200、LME288和其他内存不足错误都消失了。此后,TDS文件大小变小了3倍,链接器和调试器的工作就像他们被Embarcadero测试过一样——再也没有疯狂的错误了。

0

对我来说似乎完全是随机的...我也遇到了“未知堆名称”错误。我尝试了很多上面的解决方案,但都没有起作用。我尝试了来自circlepi314的ilink,尝试清理临时文件,多次重新启动等等。 在Embarcadero的链接器故障页面上,我发现dll调用的调用约定可能会引起麻烦。我的项目确实包含对dll的调用。 我排除了这些调用,编译后它再次链接而没有任何问题。 就在那之后,我又包含了这些调用,它也再次链接而没有任何问题。虽然我甚至在其中清理了项目。我甚至无法再次复制它。 肯定有一些残留物被链接器使用,现在已经消失了。 所以希望这可以帮助将来的某个人。


0
在我的情况下,是 Avast 杀毒软件导致的 - 我关闭了它,链接就可以工作了。

0

我在10.4版本中遇到了同样的问题。在安装后的第一次编译中,ilink32会发出一长串警告。我检查了链接器选项中的大地址感知(LARGEADDRESSAWARE)标志,并已经设置好了。然后我将TDS Heapsize设置为低于0x08000000的值(我使用了0x07FFFFFF),并进行了重建。此时,链接完全失败了。然后我将TDS Heapsize重置为默认值0并重新构建,此时所有的ilink32警告都被消除了,链接完全干净。

我怀疑TDS Heapsize值只有在明确设置时才会从配置中读取。我不认为在默认值0上键入零会起作用,因为IDE可能无法看到值的变化,所以我建议将其设置为非零值,进行构建,然后将其设置回零并重新构建。


0
ILINK32.EXE被AVG防病毒软件拦截了。为ILINK添加了一个例外,问题解决了。

0

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


0

看起来在 10.2.3 提供的链接器中,TDS 堆大小可以设置为 0x1FF00000。在旧版本和新版本中,这个最大值更小(会出现 LME200)。如果您需要一个较大的堆大小,我建议使用 10.2.3 的链接器。我也已经提交了一个关于此问题的错误报告:RSP-27205


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接