Erreur C++ Builder XE7 LME288
tout à coup, tout à coup, je reçois l'erreur de linker 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
Je n'ai pas d'AV installé et le projet fonctionne bien depuis plus d'un an. J'ai essayé:
- linker incrémental Désactivé / Activé, aucune différence...
- supprime manuellement tous les fichiers dans /debug, toujours pas de changement...
- full Build, pas de différence...
- redémarre l'ordinateur, pas de changements...
cette question a été posée avant ici mais aucune explication ou solution réelle n'a été présentée.
Que puis-je faire d'autre pour arranger ça?
EDIT
J'ai essayé de reconstruire quelques autres projets qui fonctionnaient bien depuis des années et maintenant je reçois l'erreur LME288 sur tous mes projets.
14 réponses
Note: avec la version de Tokyo de C++ Builder en avril 2017, Amarcadero a mis à niveau le linker, apparemment résoudre ce problème (Je ne l'ai pas testé): "le linker est maintenant Grande adresse conscient et peut adresser jusqu'à 4 Go sur un système 64 bits, deux fois le montant précédent. (Certains clients ont piraté le linker pour être LAE [sic] dans le passé en activant le bit dans L'en-tête PE; comme le code n'était pas écrit pour être Lae-aware ce piratage a empêché le lien incrémental et parfois autre fonctionnalité de fonctionner correctement.) " https://community.embarcadero.com/blogs/entry/what-s-new-in-c-builder-10-2-part-1-the-linker
cependant, le 24 mai 2017, Ashleigh Quick a signalé que 10.2 linker de Tokyo ne résout toujours pas le problème: https://quality.embarcadero.com/browse/RSP-12869
mais il y a encore de l'espoir: à partir de 10.2 Tokyo, vous avez de nouvelles options pour contrôler les GRANDESADDRESSAWARE et les tailles de tas de linker. Dieter Woellner a rapporté le 26-Oct-2017 que, temporairement, le réglage C++-Linker | Advanced | Advanced Options entry à"- GF:LARGEADDRESSAWARE " a éliminé le problème. Mais le problème est revenu, et il a découvert que si vous définissez le TDS Heapsize à une valeur inférieure à 0x08000000 vous évitez l'erreur/plantage sur la liaison...pour l'instant.
=====================================
je suis l'un de ces clients qui ont piraté le linker pour être LAA, interférant ainsi avec liaison incrémentale (dont je n'ai pas besoin) et résoudre mon problème. Si vous avez l'intention de continuer à utiliser linkers dans les versions 10.1 ou précédentes, et que vous n'avez pas besoin de liens incrémentiels, lisez la suite.
=====================================
j'ai résolu le problème en mettant le drapeau /LARGEADDRESSAWARE
dans ilink32.exe
. La solution originale est venue de
Hiroyuki Shimada, utilisant editbin
, et posté à http://qc.embarcadero.com/wc/qcmain.aspx?d=134775 le 1/12/2016. Il l'a aussi appliqué à bcc32.exe
; Je n'en avais pas besoin.
en tant que service public, j'ai affiché mon ilink32 corrigé.exe versions ici:
- RAD Studio 10 Seattle: https://s3.amazonaws.com/public-mfay/ilink32.exe
- RAD Studio 10.1 Berlin: https://s3.amazonaws.com/public-mfay/ilink32-10.1.exe
pour utiliser l'un ou l'autre, renommez votre ilink32.exe
dans votre répertoire RAD Studio binaires (par exemple C:\Program Files (x86)\Embarcadero\Studio.0\bin
pour RAD Studio Seattle, ou ....0\bin
pour Berlin), et copiez le mien à sa place, renommez-le en ilink32.exe
.
[Note: ces linkers / LAA résolvent le problème pour beaucoup, mais pas pour tous les utilisateurs; voir @Andrew Legget post sur 7/25/2016 à https://quality.embarcadero.com/browse/RSP-13247 ]
ce problème existe depuis longtemps et n'est pas limité à XE3, XE5, XE7, XE8... Il y a maintenant une longue discussion / lamentation à https://quality.embarcadero.com/browse/RSP-13247 quant à la raison pour laquelle cela a été corrigé dans une version de RAD Studio mais a fait marche arrière dans une version ultérieure; apparemment / LAA "a entraîné des échecs lors de la progressivement avec la statique RTL". Selon le 28/Mar/16 12:14 post de Dennis Jones dans ce thread, le patch /LAA ne traite pas les autres erreurs de linker "EXE1825" ou "out of memory".
lire ci-dessous si vous voulez voir trois façons dont ilink32.exe peut être patché...
-
mettre le drapeau lamarker avec l'outil , téléchargeable à partir de: http://cc.embarcadero.com/Item/30459 (merci à Doug Hay, 19 / Jul / 16 post in https://quality.embarcadero.com/browse/RSP-13247 ):
lamarker -M -Filink32.exe
(vous pouvez le faire directement dans votre répertoire C:\Program Files (x86)\Embarcadero\Studio.0\bin
(ou ....0\bin
); il renommera l'original ilink32.exe
en ilink32.exe.old
-- si vous avez la permission)
--OU--
-
utiliser
editbin
de MS Visual Studio , si vous avez déjà une telle installation (Microsoft prétend queeditbin
doit être exécuté à partir de L'IDE). Comme étape préliminaire, copierbcc32.exe
etilink32.exe
pour empêcher le blocage de UAC (et de les sauvegarder)copy "C:\Program Files (x86)\Embarcadero\RAD Studio.0\bin\bcc32.exe" .
copy "C:\Program Files (x86)\Embarcadero\RAD Studio.0\bin\ilink32.exe" .
editbin /LARGEADDRESSAWARE bcc32.exe
editbin /LARGEADDRESSAWARE ilink32.exe
-- OU --
- placer le grand drapeau de connaissance D'adresse en utilisant
editbin
du paquet masm32 "1519820920
télécharger de http://www.masm32.com/download.htm , qui crée c:\masm32\bin\editbin.exe
. J'ai reçu quelques avertissements (concernant les ordinaires 201 et 203) lors de L'installation de MASM32 mais son auto-test a réussi, et tout ce dont j'avais besoin était editbin.exe
.
j'ai eu ce problème aussi bien avec RAD Studio XE8 installé sur Windows 10. Installé sur Windows 7 (x86), RAD Studio XE8 a fonctionné correctement.
après être passé à Windows 10 (x86), j'ai rencontré les terribles erreurs lme288 inconnues. Au début, il n'apparaissait pas sur Windows 10, mais si j'installais quelque chose, il apparaîtrait. Si je restaurais L'ordinateur sous Windows 7, il disparaîtrait.
après une petite recherche sur le net, je trouvé la solution. Il y a un problème de mémoire avec ilink32.exe et vous devez activer L'espace mémoire de 3 Go au démarrage sur l'ordinateur. Voici ce que je fais maintenant si cette erreur s'affiche à nouveau:
- exécuter l'invite de commande en tant qu'administrateur.
- Type (sans guillemets) "bcdedit / set IncreaseUserVa 3072 "
- ordinateur de redémarrage.
après avoir fait cela, ilink32 fonctionne correctement.
j'ai trouvé qu'après avoir installé une nouvelle version D'Acronis True Image (2016), l'erreur LME288 est revenue. Mais en lançant la solution bcdedit ici, il a corrigé le linker RAD Studio XE8!!!
j'ai trouvé une solution qui semble fonctionner.
il semble avoir quelque chose à voir avec les fichiers temporaires corrompus. J'ai réussi à le faire fonctionner à nouveau après j'ai fait un "Nettoyage de Disque" sur mon disque système.
J'ai supprimé tous les fichiers de la liste (Toutes les cases à cocher vérifiées) et aussi les "nettoyer les fichiers système"
après cela je pouvais compiler et lier, même sans redémarrer. Même le lien incrémental a recommencé à fonctionner!
vient D'exécuter XE8 comme administrateur l'a réparé pour moi.
comme Drewski j'ai rencontré l'erreur LME288 après la mise à niveau vers Windows 10 (x64).
L'erreur a disparu de changer le Prévention d'Exécution des Données paramètres pour ilink32.exe
:
- propriétés du système - > Paramètres avancés du système -> performances - > paramètres - > prévention de L'exécution des données
- allumez DEP pour tous les programmes et services sauf ceux que je sélectionne ->
ilink32.exe
.
dans mon cas, essayer toutes les autres options mentionnées ici n'a pas fonctionné du tout.
ce qui semble avoir fait l'affaire était de définir manuellement la quantité de mémoire virtuelle, dans les paramètres du système de ma machine Windows 10. Il a été réglé pour être géré automatiquement par le système D'exploitation, mais en le changeant à une valeur manuelle (même lorsque le minimum était moins que ce qui a été attribué automatiquement, et il est ce qui est utilisé effectivement) a fait le linker fonctionne à nouveau.
dans mon cas, L'OS avait assigné quelque chose comme 1 600 Mo. J'ai fixé le minimum à 1.024 et le maximum à 3.072, redémarré, et maintenant le linker fonctionne très bien. La quantité utilisée est de 1 024 (même si la valeur recommandée est d'environ 1 900).
j'ai une solution différente qui, je l'espère, aidera quelqu'un aux prises avec ce problème.
j'ai tout essayé et aucune des solutions suggérées auparavant n'a fonctionné pour moi. Le nettoyage du disque n'a pas aidé. Il s'agit clairement d'un bug dans C++Builder qui existait depuis de nombreuses années, et qui n'est toujours pas corrigé même dans XE8 à partir de 2015.
heureusement, j'ai eu un autre ordinateur avec l'environnement de travail, où le même projet a compilé. J'ai copié tous les fichiers (*.EXE.* ,obj, etc) à partir du répertoire de sortie (Win32/Debug) de cet ordinateur vers celui où j'ai eu le problème, et qui a réglé magiquement C++ Builder straight; toutes les constructions ont ensuite commencé à fonctionner.
fixé pour XE10 et Windows 10 (x64) avec Bitdefender est 2016:
Bitdefender - > Modules - > Antivirus - > Exclusions - > Procédés Exclus - > Ajouter "...\ bin\ilink32.exe" -> permet de
redémarrage de W10 résolu ce problème sur XE5 mais je désactive incremental build
nous avons le même problème et l'avons résolu en augmentant la mémoire virtuelle pour Windows (il était très bas, 800Mo, il est maintenant d'environ 4 Go)
j'ai corrigé cela en assurant que le dossier D'installation Embarcadero (par exemple C:\Program Files (x86)\Embarcadero) a été exclu de tous les scans antivirus.
Windows 10 (x64), Rad Studio XE Berlin (incremental link enabled).
j'ai corrigé le problème en excluant " C:\Program Files (x86)\Embarcadero\bin " from antivirus Window Defender scans.
Modification de l'IDE de la langue à partir du français à l'anglais avec BDSSetLang.EXE résolu pour moi l'erreur LME288 !
la solution est très simple: la variable d'environnement Windows PATH dépasse sa limite de 2047 octets.
S'il vous plaît voir ma description ici: http://blog.bitart.at/lme288/ [allemand]
Edit: Ma "solution" n'a duré que quelques mois. Après l'installation de Microsoft Visual Studio, les problèmes sont revenus.
comme mentionné dans une autre réponse: Patching ilink32.exe avec 151920920"
lamarker -M -Filink32.exe
semble être la bonne solution.