C++ Builder xe5 Обнаружена ошибка (LME288)
C++ Builder xe5 [ошибка ilink32] Ошибка: невозможно выполнить ссылку [предупреждение ilink32] Предупреждение: обнаружена ошибка (LME288)
это произошло, когда я пытался скомпилировать тестовый проект C++ Builder XE5 на Windows XP
10 ответов
Я получил некоторую информацию об этом от Embarcadero, которая может помочь.
Ошибка "недостаточно памяти", ошибка. Причина ошибок "Недостаточно памяти" (которые имеют разные формы) в компоновщике заключается в том, что компоновщик должен предварительно выделить память в смежных кучах, которые он затем использует при связывании, в прошлом эти кучки нельзя было отрегулировать. Нам нужно было сделать лучшее предположение, поэтому в новом 64-битном компоновщике (а также был добавлен к 32-битному компоновщику) мы позволили людям иметь возможность настраивать размер этих куч в случае необходимости. Теперь причина, по которой эти кучи могут быть проблемой, состоит в том, что не все системы одинаковы, некоторые люди используют различное программное обеспечение, которое отображает библиотеки DLL в адресное пространство компоновщика, такие как библиотеки DLL Windows Hook, антивирусное программное обеспечение - все эти библиотеки DLL выделяют память ВНУТРИ компоновщика (любое приложение действительно) адресного пространства и, следовательно, влияет на размер куч, которые может выделить компоновщик. Таким образом, мы добавили эту возможность для настройки кучи вручную, но мы также распределили начальные кучи достаточно большими.
32-битный компоновщик имеет новый ключ -GH, см. Ниже, он аналогичен ключу ilink64.
Синтаксис для коммутатора:
-GH [имя кучи]=[количество байтов для кучи]"
Эта опция -GH существует начиная с XE3 Update 1, но, очевидно, не задокументирована?
Чтобы увидеть, какая куча не хватает памяти, вы можете попробовать из командной строки.
MSBuild / p: платформа =Win32 /v:diag XXXX.cbproj
Это предоставляет дополнительную информацию, такую как:
Переполнение кучи компоновщика: code
Кучи линкера
информация 0x002d0000 0x0a000000
код 0x000d0000 0x00100000
данные 0x00030000 0x08000000
bss 0x08000000 0x08000000
Неустранимый: из памяти
Левая сторона вышеприведенного вывода - это количество байтов, используемых в данный момент, а справа - количество байтов, выделенных для конкретной именованной кучи.
Размеры кучи по умолчанию, которые компоновщик выделяет при запуске:
"system", размер по умолчанию 0x08000000
"информация", размер по умолчанию 0x0A000000
"код", размер по умолчанию 0x08000000
"родата", размер по умолчанию 0x06000000 // данные только для чтения
"данные", размер по умолчанию 0x08000000
"bss", размер по умолчанию 0x08000000
"tds", размер по умолчанию 0x0FA00000
Когда вы видите "неизвестную кучу", обычно это куча "tds"
Пример для настройки tds heap на 0x0A000000 вы должны сделать -GHtds=0x0A000000
Надеемся, что эта информация поможет вам и другим с ошибкой LME288.
Я понял.
У меня была такая же проблема с Сиэтлом 10 на Windows 7x64. Я попробовал все это. Все, что вы можете найти на SO, EDN и многое другое. Я наконец сломался и использовал свой билет поддержки Embarcadero, потому что я просто больше ничего не мог связать. После того, что я могу описать как трудную и доблестную попытку одного из старших разработчиков программного обеспечения Embarcadero, мы наконец наткнулись на это исправление:
Сначала щелкните правой кнопкой мыши файл ilink32.exe, выберите "Свойства", затем перейдите на вкладку "Совместимость" и установите флажок "Запустить эту программу в режиме совместимости для" и выберите Windows XP SP3. В моей системе (64-битная Win7, работает Seattle 10) файл ilink32.exe находится в папке "C:\Program Files (x86)\Embarcadero\Studio\17.0\bin".
Во-вторых, установите права администратора (даже если вы уже являетесь администратором), щелкнув правой кнопкой мыши значок запуска Builder и выбрав "Запуск от имени администратора".
Теперь откройте свои проекты и дайте ссылку на содержание вашего сердца! (Ваши результаты могут отличаться.)
Я обнаружил, что эта страница ищет ту же проблему, и решение для меня - простой трюк:
Вместо двойного щелчка в проекте, чтобы открыть его (например, двойной щелчок в xxxx.cbproj), запустите ide и затем откройте проект.
Экспликация? понятия не имею, но теперь ссылка правильно.
У меня была такая же проблема здесь C++ Builder XE7 LME288 Ошибка
Мое решение было простым, чтобы очистить все временные файлы. Кажется, ошибка связана с поврежденными временными файлами.
У меня была та же проблема компоновщика LME288 в RAD Studio XE7 / Windows 10. Очистка временных файлов с помощью CCleaner исправила это.
Изменить: проблема продолжает возвращаться, но очередная очистка исправляет ее.
Для меня в Windows 10 проблема заключалась в том, что не было выделено достаточно виртуальной памяти. Шаги, чтобы решить проблему:
- Перейдите в Система> Расширенные настройки системы> Дополнительно.
- В разделе "Производительность" нажмите "Настройки"> "Дополнительно"
- Под Виртуальной памятью нажмите "Изменить"
- Убедитесь, что текущая выделенная память равна или больше рекомендованной памяти. Если нет, выберите "Нестандартный размер" и задайте для начального размера рекомендуемый размер, а для "Максимальный размер" - большее значение.
См. Также C++ Builder XE7 Ошибка LME288
Решения, приведенные здесь, не работают для меня. Мое решение состоит в том, чтобы установить фиксированный размер файла подкачки Windows (например, min: 1000 МБ и max: 10000). После перезапуска я установил переключатель на "Размер системы" и перезапустил снова. Теперь я могу компилировать и ссылаться без ошибок компоновщика. Но ошибка LME появляется снова через несколько дней. Затем я должен сделать те же шаги с файлом подкачки, чтобы решить проблему.
Отключите антивирусное программное обеспечение для ilink32.exe в папке bin embarcadero, особенно если вы используете bitdefender.
Для меня проблема началась, когда я включил автоматическое увеличение номера сборки в XE7. Проект, который я проработал несколько месяцев без проблем. Проект был создан более ранней версией Builder. Первая проблема, которая возникла, была проблема для компилятора, чтобы найти windows.h, и то же самое для компилятора rc. PATH были обновлены до недействительных версий (возможно, они были из более ранних версий Builder). После добавления PATH произошел LME288. После переключения номера сборки Автоинкремент и удаления всех временных файлов, похоже, снова работает.