Линкер не хватает памяти LNK1102 - PullRequest
11 голосов
/ 06 октября 2008

Мои коллеги и я пытались создать проект, содержащий несколько тысяч классов, но мы получаем ошибку LNK1102 (Линкер не хватает памяти) Я видел несколько советов в Интернете, таких как увеличение виртуальной памяти. Мы пытались, но это не помогло. Мы также видели, что при компиляции кода включаются разные уровни предупреждений. Парень предложил включить уровень 4 для предупреждений. Как это могло быть сделано? Есть ли другие предложения?

Ответы [ 10 ]

8 голосов
/ 06 декабря 2011

У меня просто была такая же проблема при компиляции простого C:

"*LINK : fatal error LNK1102: out of memory*"

Решением для меня было: удалить все файлы * .pdb (DEBUG). После этого все было связано без проблем. Так что, вероятно, файл pdb был дефект в моем случае - забавным образом причиной этой ошибки компоновщика.

5 голосов
/ 09 сентября 2010

Проект (правый клик) & rarr; Свойства & rarr; Свойства конфигурации & rarr; Линкер & rarr; Оптимизация & rarr; Ссылки & rarr; изменить на Сохранить данные без ссылок

Работал на моей машине!

1 голос
/ 19 декабря 2012

Если вы используете Visual C ++ 6.0, избегайте загрузки рабочей области с диска «subst» или с сетевого диска. Копирование проекта в папку «C: \ temp \ MyProject \» и загрузка рабочей области из этого места привели к тому, что ошибка «LNK1102» исчезла для меня на этот раз.

Надеюсь, это поможет!

1 голос
/ 19 мая 2009

Я подозреваю, что компоновщик также занимает много времени, чтобы закончить. Поскольку вы говорите, что существуют тысячи классов с ++, моей первой мыслью было проверить, существует ли много встроенных методов классов.

Попробуйте это:

Выберите группу классов, которые используются чаще всего, сделайте все встроенные методы не встроенными, переместив их из файла заголовка в файл реализации. Я испытал радикальные изменения в связывании времени. Один проект у нас прошел от 15 минут чистого соединения до 30 секунд. Это также должно повлиять на память процесса связывания.

Удачи! // Magnus

1 голос
/ 06 октября 2008

Если вы запускаете это на компьютере с Windows, откройте диспетчер задач при связывании и перейдите на страницу производительности. Если вы видите, что использование файла подкачки увеличивается до полного заполнения, увеличьте его размер как минимум вдвое. Если файл подкачки не заполняется до того, как выдает ошибку, убедитесь, что на машине достаточно места на диске.

1 голос
/ 06 октября 2008

Если проект слишком велик, разбейте его на несколько компонентов.

Это также может помочь с обслуживанием.

0 голосов
/ 04 октября 2017

У меня была эта ошибка fatal error LNK1102: out of memory и я решил ее с помощью , используя 64-битный компилятор и компоновщик . Вы устанавливаете переменную среды:

set PreferredToolArchitecture=x64

и затем запустите Visual Studio.

0 голосов
/ 12 июля 2012

У меня та же ошибка при инкрементном построении большого проекта в VS 2008. Я просто очистил проект, удалил все файлы * .ilk, * .dll, * .exe и * .pdb и собрал все еще раз.

0 голосов
/ 09 октября 2008

Определенно контролировать фактическое использование памяти через диспетчер задач при связывании. Закройте другие программы, чтобы увеличить доступную физическую память, и, если возможно, установите размер файла подкачки 4092 МБ.

Кроме того, это может помочь создать ссылку-репро . Это позволит другим людям попытаться воспроизвести ваши проблемы с ссылками на других компьютерах.

0 голосов
/ 06 октября 2008

Запустить 64-битную версию компоновщика? Недостаток: вы получите исполняемый файл amd64. (В отличие от набора инструментов для кросс-компиляции 32-> 64, набор инструментов для 64-> 32-битных систем отсутствует)

...