LME288

Es mag dem einen oder anderen schon passiert sein: Urplötzlich will sich ein Programm mit dem Embarcadero C++ Builder nicht mehr linken lassen:

Abhängigkeiten des Projekts werden überprüft...
Compilieren von Project1.cbproj (Debug, Win32)
bcc32 Befehlszeile für "Project1.cpp"
  c:\program files (x86)\embarcadero\studio\17.0\bin\bcc32.exe -D_DEBUG -DUSEPACKAGES -n.\Win32\Debug -I"c:\program files 
  (x86)\embarcadero\studio\17.0\include\windows\crtl\DE";"c:\program files (x86)\embarcadero\studio\17.0\include\windows\rtl\DE";"c:\program files 
.......
[VIELE, VIELE WEITERE ZEILEN FOLGEN HIER...]
.......
[ilink32 Warnung] Warning: C:/Users/huh/Documents/Embarcadero/Studio/Projekte/Win32/Debug/Project1.ils: 0x00040000 / 0x08000000
[ilink32 Warnung] Warning: unknown heap name   : 0x08000000 / 0x08000000
[ilink32 Warnung] Warning: Fehler gefunden (LME288)
[ilink32 Fehler] Error: Linken kann nicht ausgeführt werden
Misslungen
Verstrichene Zeit: 00:00:02.2

Hierzu findet man im Netz zahlreiche Tipps, vom Löschen irdgendwelcher Temporärdateien, Deinstallation diverser Programme bis hin zur Neuinstallation vom RAD Studio.

Zuerst dachte ich: “Alles Quatsch – die Lösung ist meist viel einfacher”. Ich ließ mich also auf folgendes Experiment, das aber nur temporär eine Lösung brachte:

In meinem Fall war es einfach so, dass ich die maximale Länge der Environment PATH Variable überschritten habe. Kein Scherz: Ist der Eintrag in PATH länger als 2047 Zeichen, dann funktioniert neben anderem auch das Embarcadero Studio nicht mehr wie erwartet.

Wie dieses Problem im Detail zu lösen ist, bleibt jedem selbst überlassen. Ich habe auf meinem Rechner nicht verwendete Pfade gelöscht und längere Pfade durch kürzere Links (z.B. “C:\_SYS\_BCC17\” anstelle von “C:\Program Files (x86)\Embarcadero\Studio\17.0”) ersetzt.

Weiterführende Literatur:

https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable

Aber ja: Wie bereits angedeutet – das alles wäre zu schön gewesen um wahr zu sein. Für einige Zeit hält die Lösung, dann aber plötzlich treten die selben Probleme wie zu Beginn auf.

Ein weiterer Lösungsvorschlag ist die Datenausführungsverhinderung, wie hier beschrieben: http://www.winfaq.de/faq_html/Content/tip2000/onlinefaq.php?h=tip2323.htm

Auch hier währte die Freude nicht lange und das alte Spiel begann von vorne.

Nachdem das Problem unablässig wieder auftaucht, habe ich nochmal nach Lösungen gesucht. Hier ein paar Ansätze:

https://stackoverflow.com/questions/28929516/c-builder-xe7-lme288-error/34819111#34819111

Und tatsächlich gab es wieder eine Lösung, die auf Anhieb funktionierte: Das Setzten des “Large Address Aware Flag” löste umgehend mein Problem mit LME288.

Folgendes ist dabei zu tun:

  1. LAMarker.exe herunterladen von https://cc.embarcadero.com/Item/30459
  2. ilink32.exe damit patchen:
LAMarker.exe -M -Filink32.exe

Nachdem mich dieses Problem schon einige Jahre immer wieder verfolgte, bin ich nun zum ersten Mal zuversichtlich, dass dies tatsächlich die Lösung sein könnte.

Kurzfristig. Denn langfristig werde ich kein Geld mehr in die Lizenzen von Embarcadero mehr investieren.