web-dev-qa-db-de.com

C++ Builder XE7 LME288 Fehler

Plötzlich bekomme ich aus heiterem Himmel den LME288-Linker-Fehler.

[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

Ich habe kein AV installiert und das Projekt läuft seit über einem Jahr gut. Ich habe versucht:

  • Inkrementeller Linker deaktiviert/aktiviert, kein Unterschied ...
  • Manuelles Entfernen aller Dateien in/debug, immer noch keine Änderung ...
  • Full Build, kein Unterschied ...
  • Computer neu starten, keine Änderungen ...

Dies wurde vor hier gefragt, aber es wurde keine wirkliche Erklärung oder Lösung präsentiert.

Was kann ich noch tun, um das Problem zu beheben?

BEARBEITEN
Ich habe versucht, ein paar andere Projekte wieder aufzubauen, die seit Jahren gut laufen, und jetzt bekomme ich bei allen meinen Projekten den Fehler LME288.

29
Max Kielland

Ich habe eine Problemumgehung gefunden, die zu funktionieren scheint.

Es scheint etwas mit beschädigten temporären Dateien zu tun zu haben. Es gelang mir, es wieder zum Laufen zu bringen, nachdem ich eine "Disk Cleanup" auf meiner Systemfestplatte durchgeführt hatte.

Ich habe alle Dateien in der Liste gelöscht (alle Kontrollkästchen markiert) und auch die "Systemdateien bereinigen".

Danach konnte ich kompilieren und verlinken, auch ohne Neustart. Selbst die inkrementelle Verknüpfung begann wieder zu funktionieren!

4
Max Kielland

Hinweis: Mit der 10.2 Tokyo-Version von C++ Builder im April 2017 hat Embarcadero den Linker aktualisiert und anscheinend dieses Problem behoben (ich habe es nicht getestet): "Der Linker ist jetzt für große Adressen bekannt und kann bis zu 4 GB adressieren auf einem 64-Bit-System das Doppelte des vorherigen Betrags. (Einige Kunden hackten den Linker in der Vergangenheit auf LAE, indem sie das Bit im PE-Header umschalteten; da der Code für diesen Hack nicht auf LAE ausgelegt war Inkrementelle Verknüpfungen und andere Funktionen funktionieren nicht ordnungsgemäß.) "https://community.embarcadero.com/blogs/entry/what-s-new-in-c-builder-10- 2-part-1-the-linker

Am 24. Mai 2017 meldete Ashleigh Quick jedoch, dass der Linker von 10.2 Tokyo das Problem immer noch nicht löst:https://quality.embarcadero.com/browse/RSP-12869

Aber es gibt immer noch Hoffnung: Ab 10.2 Tokyo haben Sie einige neue Optionen zur Steuerung der Größe von LARGEADDRESSAWARE und Linker-Heapspeichern. Dieter Woellner berichtet am 26.10.2017 setzt vorübergehend C++ - Linker | Fortgeschrittene | Der Eintrag Erweiterte Optionen zu "-GF: LARGEADDRESSAWARE" behebt das Problem. Aber das Problem kehrte zurück und er entdeckte, dass, wenn Sie die TDS-Heap-Größe auf einen Wert unter 0x08000000 setzen, Sie den Fehler/Absturz beim Verknüpfen ... vorerst vermeiden.

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

Ich gehöre zu den Kunden, die den Linker als LAA gehackt haben, wodurch die inkrementelle Verknüpfung (die ich nicht benötige) beeinträchtigt und mein Problem gelöst wurde. Wenn Sie weiterhin Linker in Version 10.1 oder früher verwenden möchten und keine inkrementelle Verknüpfung benötigen, lesen Sie weiter.

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

Ich habe das Problem durch Setzen des Flags /LARGEADDRESSAWARE In ilink32.exe Behoben. Die ursprüngliche Lösung kam von Hiroyuki Shimada mit editbin und wurde unter http://qc.embarcadero.com/wc/qcmain.aspx?d=134775 am 1/12/veröffentlicht. 2016. Er wendete es auch auf bcc32.exe An; Ich musste nicht.

Als öffentlicher Dienst habe ich meine gepatchten ilink32.exe-Versionen hier veröffentlicht:

Um eines von beiden zu verwenden, benennen Sie Ihren ilink32.exe In Ihrem RAD Studio-Binärverzeichnis um (z. B. C:\Program Files (x86)\Embarcadero\Studio\17.0\bin für RAD Studio Seattle, oder ...\18.0\bin für Berlin) und kopiere meins an seine Stelle und benenne es in ilink32.exe um.

[Hinweis: Diese/LAA-Linker lösen das Problem für viele, aber nicht für alle Benutzer. siehe @ Andrew Leggets Beitrag am 25.07.2016 unter https://quality.embarcadero.com/browse/RSP-13247 ]

Dieses Problem besteht schon seit langer Zeit und ist nicht nur auf XE3, XE5, XE7, XE8 beschränkt ... Es gibt jetzt eine lange Diskussion/Klage unter https://quality.embarcadero.com/browse/RSP -13247 Warum wurde dies in einer Version von RAD Studio behoben, aber in einer späteren Version zurückgesetzt?/LAA "führte anscheinend zu Fehlern beim inkrementellen Verknüpfen mit der statischen RTL". Laut dem 28/Mar/16 12:14 PM) -Post von Dennis Jones in diesem Thread behebt der/LAA-Patch NICHT die anderen Linker-Fehler "EXE1825" oder "out of memory".

Lesen Sie unten, ob Sie drei Möglichkeiten sehen möchten, wie ilink32.exe gepatcht werden kann ...


  1. Setzen Sie das Flag "Large Address Aware" mit dem Tool lamarker , das heruntergeladen werden kann von: http://cc.embarcadero.com/Item/30459 = (Dank an Doug Hay, 19/Jul/16 Post in https://quality.embarcadero.com/browse/RSP-13247 ):

    lamarker -M -Filink32.exe

(Sie können dies direkt in Ihrem C:\Program Files (x86)\Embarcadero\Studio\17.0\bin (oder ...\18.0\bin) - Verzeichnis tun; es wird das ursprüngliche ilink32.exe In ilink32.exe.old Umbenannt - wenn Sie die Erlaubnis dazu haben )

--ODER--

  1. Verwenden Sie editbin von MS Visual Studio , wenn Sie bereits solche installiert haben (Microsoft behauptet, dass editbin von ausgeführt werden muss innerhalb der IDE). Kopieren Sie als ersten Schritt bcc32.exe Und ilink32.exe, Um die Blockierung der Benutzerkontensteuerung zu verhindern (und sie zu sichern).

    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

- OR -

  1. Setzen Sie das Large Address Aware-Flag mit editbin aus dem masm32 -Paket:

Laden Sie von http://www.masm32.com/download.htm herunter, wodurch c:\masm32\bin\editbin.exe Erstellt wird. Ich habe während der MASM32-Installation einige Warnungen (mit den Ordnungszahlen 201 und 203) erhalten, aber der Selbsttest wurde bestanden, und alles, was ich brauchte, war editbin.exe.

21
circlepi314

Ich hatte dieses Problem auch mit RAD Studio XE8, das unter Windows 10 installiert wurde. Bei der Installation unter Windows 7 (x86) arbeitete RAD Studio XE8 ordnungsgemäß.

Nach dem Upgrade auf Windows 10 (x86) bin ich auf die gefürchteten unbekannten Heap-Fehler LME288 gestoßen. Anfangs erschien es nicht unter Windows 10, aber wenn ich etwas installiere, würde es auftauchen. Wenn ich den Computer unter Windows 7 wiederhergestellt habe, verschwindet er.

Nach ein wenig Recherche im Netz fand ich die Lösung. Es gibt ein Speicherproblem mit ilink32.exe, und Sie müssen den 3 GB-Speicherplatz beim Systemstart auf dem Computer aktivieren. Folgendes mache ich jetzt, wenn dieser Fehler jemals wieder angezeigt wird:

  1. Führen Sie die Eingabeaufforderung als Administrator aus.
  2. Typ (ohne Anführungszeichen) "bcdedit/set IncreaseUserVa 3072"
  3. Computer neu starten.

Danach funktioniert ilink32 einwandfrei.

Ich habe festgestellt, dass nach der Installation einer neueren Version von Acronis True Image (2016) der LME288-Fehler zurückgegeben wurde. Wenn Sie die bcdedit-Lösung hier ausführen, wurde der Linker RAD Studio XE8 behoben.

13
Drewski

Nur XE8 als Administrator auszuführen, hat es für mich behoben.

4
AashishPatel

Als Drewski bin ich nach dem Upgrade auf Windows 10 (x64) auf den LME288-Fehler gestoßen.

Der Fehler wurde behoben, indem die Einstellungen für Data Execution Prevention für ilink32.exe geändert wurden:

  • Systemeigenschaften -> Erweiterte Systemeinstellungen -> Leistung -> Einstellungen -> Data Execution Prevention
  • Aktivieren Sie DEP für alle Programme und Dienste mit Ausnahme derjenigen, die ich auswähle -> ilink32.exe.
3
manlio

In meinem Fall funktionierte es nicht, alle anderen hier genannten Optionen auszuprobieren.

Der scheinbare Trick bestand darin, die Menge des virtuellen Speichers in den Systemeinstellungen meines Windows 10-Computers manuell einzustellen. Es wurde so eingestellt, dass es automatisch vom Betriebssystem verwaltet wird, aber wenn Sie es auf einen manuellen Wert ändern (selbst wenn das Minimum niedriger war als das, was automatisch zugewiesen wurde und tatsächlich verwendet wird), wurde der Linker wieder funktionsfähig.

In meinem Fall hatte das Betriebssystem etwa 1.600 MB zugewiesen. Ich habe das Minimum auf 1.024 und das Maximum auf 3.072 eingestellt, neu gestartet, und jetzt funktioniert der Linker einwandfrei. Die verwendete Menge lautet 1.024 (auch wenn der empfohlene Wert ~ 1.900 beträgt).

2
Rodrigo Gómez

Beim Neustart von W10 wurde dieses Problem auf XE5 behoben. __

1
Lotfi

Für XE10 und Windows 10 (x64) mit Bitdefender IS 2016 behoben:

Bitdefender -> Module -> Antivirus -> Ausschlüsse -> Ausgeschlossene Prozesse -> Hinzufügen "...\bin\ilink32.exe" -> Zulassen

1
ravdouha

Ich habe eine andere Lösung, die hoffentlich jemandem helfen wird, der damit zu kämpfen hat.

Ich habe alles ausprobiert und keine der vorgeschlagenen Lösungen funktionierte für mich. Die Datenträgerbereinigung hat nicht geholfen. Dies ist eindeutig ein seit vielen Jahren bestehender Fehler in C++ Builder, der bis 2015 auch in XE8 noch nicht behoben wurde. 

Glücklicherweise hatte ich einen anderen Computer mit Arbeitsumgebung, auf dem dasselbe Projekt kompiliert wurde. Ich kopierte alle Dateien (* .exe, * .obj usw.) aus dem Ausgabeverzeichnis (Win32/Debug) von diesem Computer in den Ordner, in dem das Problem aufgetreten war, und der C++ Builder auf magische Weise gerade eingestellt hat. Alle Builds danach funktionierten. 

1
Cozzamara

Das Ändern der Sprache IDE von Französisch in Englisch mit BDSSetLang.exe Für mich wurde der LME288-Fehler behoben.

0
Lotfi

Die Lösung ist sehr einfach: Die Windows PATH-Umgebungsvariable überschreitet ihr Limit von 2047 Byte.

Siehe meine Beschreibung hier: http://blog.bitart.at/lme288/ [deutsch]

Edit: Meine "Lösung" dauerte nur ein paar Monate. Nach der Installation von Microsoft Visual Studio wurden die Probleme zurückgegeben.

Wie in einer anderen Antwort erwähnt: Patches ilink32.exe mit

lamarker -M -Filink32.exe

scheint die richtige Lösung zu sein.

0
Herwig

Ich habe dies behoben, indem sichergestellt wurde, dass der Installationsordner von Embarcadero (z. B. C:\Programme (x86)\Embarcadero) von allen Antivirenscans ausgeschlossen wurde.

0
RobinP

Wir haben das gleiche Problem und haben es gelöst, indem wir den virtuellen Speicher für Windows erhöht haben (es war sehr niedrig, 800Mo, jetzt sind es etwa 4 Go).

0
RichardP

Windows 10 (x64), Rad Studio XE Berlin (inkrementeller Link aktiviert).

Ich habe das Problem behoben, indem ich " C:\Programme (x86)\Embarcadero\bin " von den Antivirus-Scans von Windows Defender ausgeschlossen habe.

0
Andrey Kouvaev