“[ilink32]致命:内存不足”在C Builder中

“[ilink32]致命:内存不足”在C Builder中,第1张

概述在将Embarcadero C Builder更新为新版本后,我们的项目突然无法构建.这只发生在我们的一个项目中.对于大多数团队成员而言,相同的代码构建没有错误.在我的计算机上,每次都会失败. 在构建选项卡中: [ilink32] Fatal: Out of memory 在输出选项卡中: Build FAILED.c:\program files (x86)\embarcadero\studi 在将Embarcadero C Builder更新为新版本后,我们的项目突然无法构建.这只发生在我们的一个项目中.对于大多数团队成员而言,相同的代码构建没有错误.在我的计算机上,每次都会失败.

在构建选项卡中:

[ilink32] Fatal: Out of memory

在输出选项卡中:

Build Failed.c:\program files (x86)\embarcadero\studio.0\Bin\CodeGear.Cpp.Targets(3517,5): error : Fatal: Out of memory

没有更多信息.

如果我启用动态RTL链接,项目链接没有错误.例如,如果我们的DeBUG目标启用了该设置,则项目将在DeBUG中链接,但不在Release中.

我该如何解决这个问题?如何为链接器提供更多内存?

解决方法 说明

在您的计算机上,其中一个链接器堆对于此项目而言太小.该项目与link with Dynamic RTL选项链接,因为在这种情况下,链接器需要更少的内存,并且堆恰好足够大.

您可以使用-GH链接器选项来增加该堆,但首先您必须找出哪个堆溢出.为此,请在链接器中启用诊断输出.

使用诊断输出进行编译

从命令行编译:

call rsvarsMSBuild /v:diag YourProject.cbproj

从IDE编译:

>转到工具>选项>环境选择
>将详细程度更改为诊断
>构建项目后,从“消息”窗口的“输出”选项卡中读取输出

增加堆大小

在输出的末尾附近,您应该找到堆的大小,类似于:

The "Ilink32" task is using "ilink32" from "c:\program files (x86)\embarcadero\studio.0\bin\ilink32.exe".Turbo Incremental link 6.75 copyright (c) 1997-2016 Embarcadero TechnologIEs,Inc.Overrun on linker heap: tdslinker Heaps------------system                 0x030d4000  0x08000000tds                    0x08710000  0x09400000c:\program files (x86)\embarcadero\studio.0\Bin\CodeGear.Cpp.Targets(3517,5): error : Fatal: Out of memoryThe command exited with code 2.

在这种情况下,堆tds中发生溢出,因此我们需要增加其大小.左列给出了正在使用的字节数,右列给出了分配的字节数.新大小应该大于右列中当前的值.

在这种情况下,tds大小为0x09400000,因此我们使用以下选项将其增加到0x0f400000:-GHtds = 0x0f400000.

在IDE中,转到Project>选项> C linker.将-GHtds = 0x0f400000添加到高级>其他选项.

保存项目选项后,再次编译项目.如果同一堆溢出,则需要进一步增加其大小.如果另一个堆溢出,您还需要增加其大小.

例如,如果代码堆现在溢出,并且您希望将其大小增加到0x0a000000,则应将其他选项更改为-GHtds = 0x0f400000 -GHcode = 0x0a000000.

如果增加堆太多,则会出现LME288错误.这意味着您已达到某些堆的最大大小.即使最大尺寸对于您的项目来说还不够,看起来似乎是C Builder 10.2.3.已将最大大小加倍,因此您可以迁移到该版本,或从10.2.3复制ilink32.exe.安装与旧版C Builder一起使用.

更多细节

> How to report a C++ Compiler or Linker problem and workarounds
> “Unable to perform link” error when compiling in RAD Studio XE8

这不能解决问题吗?

>如果您使用的是C Builder 10.0或10.1,请尝试按照此处所述修补链接器:LME288 Error in C++ Builder
>如果您使用的是C Builder 10.2,则修补链接器不起作用,但您可以在同一链接中尝试其他解决方案
> C Builder 10.2.有管理堆的设置:Handling Out of Memory Errors

总结

以上是内存溢出为你收集整理的“[ilink32]致命:内存不足”在C Builder中全部内容,希望文章能够帮你解决“[ilink32]致命:内存不足”在C Builder中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1256970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存