Ошибка соединения с ненормальным потреблением памяти или LNK1106 в Visual Studio 2005 - PullRequest
0 голосов
/ 02 апреля 2010

Я пытаюсь создать решение для Windows XP в Visual Studio 2005. Это решение содержит 81 проект (статические библиотеки, исполняемые файлы, библиотеки DLL) и успешно используется нашими партнерами. Я скопировал пакет решений из их репозитория и попытался установить его на 3 аналогичных компьютерах людей в нашей группе. Я был успешным на двух машинах, и решение не удалось построить на моей машине.

При сборке на моей машине возникли две проблемы:

  1. Во время простой сборки создание самой большой статической библиотеки (около 522 МБ в режиме отладки) завершится ошибкой с сообщением «13> libd \ ui1d.lib: фатальная ошибка LNK1106: неверный файл или диск заполнен: невозможно найти 0x20101879"

  2. Полная перестройка решения создает эту библиотеку, однако, когда дело доходит до связывания библиотеки с основным файлом .exe, devenv.exe порождает link.exe, который потребляет около 80 МБ физической памяти и 250 МБ виртуальной, и порождает другую ссылку. Отлично, что делает то же самое. Это продолжается до тех пор, пока система не исчерпает память. На компьютерах моих коллег, где можно было выполнить успешную сборку, существует только один процесс link.exe, который использует всю память, необходимую для компоновки (около 500 МБ физической).

На моем компьютере достаточно места на жестком диске, а файловая система - NTFS.

Все три наши системы похожи - процессоры Core2Quad, 4 ГБ ОЗУ, Windows XP SP3. Мы используем Visual Studio, установленный из того же источника.

Я пытался использовать разные ОЗУ и ЦП, используя выделенный графический адаптер, чтобы исключить возможность совместного использования видеопамяти, влияющего на сборку, переместить файлы решения в другое место, используя разные версии VS 2005 (Professional, Standard и Team Suite), изменив объем доступной виртуальной памяти, запуск memtest86 и сборка проекта с нуля (т. е. чистый пакет).

Я прочитал , что MSDN говорит о LNK1106 , ни один из случаев не относится ко мне, за исключением, может быть, "из кучи", однако я не уверен, как мне с этим бороться.

Единственная идея, которую я оставил, - это переустановка ОС, однако я не уверен, что это поможет, и я не уверен, что моя ситуация не повторится на другом компьютере.

Кто-нибудь даст мне какой-нибудь совет?

Спасибо

1 Ответ

2 голосов
/ 02 апреля 2010

Да, 522 мегабайта - это примерно столько же непрерывной порции виртуальной памяти, которую можно выделить в 32-разрядной версии Windows.Это одна огромная большая библиотека, вам придется ее разделить.

Возможно, вы сможете отложить неизбежное, опираясь на 64-разрядную версию Windows, 32-разрядные программы получают гораздо большую виртуальную памятьпространство, близкое к 4 ГБ.

...