C ++: Ссылка: DEBUG XXXXX.EXE не найден или не построена по последней постепенной ссылке; Выполнение полной ссылки

StackOverflow https://stackoverflow.com/questions/1554984

  •  20-09-2019
  •  | 
  •  

Вопрос

Использование Visual Studio 2008 SP1,
Эта строка:

LINK : debug\XXXXX.exe not found or not built by the last incremental link; performing full link

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

Это было полезно?

Решение 2

Так что оказывается, что проблема исправит себя, если я добавлю /INCREMENTAL в командную строку линкера. Это несмотря на то, что поведение по умолчанию в соответствии с документами заключается в том, чтобы включить постепенное связывание.

Странный.

Другие советы

Старый вопрос, но на случай, если кто -то все еще является проблемой (и это ...).

Инкрементная ссылка несовместима с генерирующим файлом манифеста (Proj Opts> Linker> Manifest File> Generate Manifest: Да). Действительно, генерирование манифеста изменяет EXE/DLL, поэтому линкер должен сделать полную связь.

Есть некоторые обходные пути, для более подробной информации:http://chadaustin.me/2009/05/incremental-coming-and-embedded-manifests/

Временное (и самое простое/быстрое) решение заключается в том, чтобы отключить Manifest Generation во время разработки и включить его снова на этапе выпуска. Хотя это отключает графический интерфейс в стиле XP/Vista для приложения (элементы управления выглядят в «Классический режим»).

Действительно стрельба в темноте, но ...

Вы перемещаете xxxxx.exe, откуда он построен в другом месте? Весь смысл постепенной связи состоит в том, чтобы изменить существующий EXE. Если их нет, это будет сложно ...

Другая возможная причина заключается в том, что файл был изменен после сборки (вероятно, другим инструментом) ...

Все причины перечислены в Помощь для /постепенного:

Кроме того, Link выполняет полную ссылку, если произойдет какая -либо из следующих ситуаций:

Файл инкрементного статуса (.ilk) отсутствует. (Ссылка создает новый файл .ilk в подготовке к последующему постепенному связующему.)

Нет разрешения на запись для файла .ilk. (Ссылка игнорирует файл .ILK и ссылается на невыраженно.)

Выходной файл .exe или .dll отсутствует.

Временная метка .ilk, .exe или .dll изменяется.

Опция ссылки изменена. Большинство вариантов ссылок при изменении между сборками вызывают полную ссылку.

Файл объекта (.obj) добавлен или опущен.

Объект, который был составлен с опцией /yu /Z7, изменяется.

  1. Скачать прокман от Microsoft.
  2. Запустите его, настройте фильтр, чтобы вы ищете доступ к пути, который содержит ваше имя .exe.
  3. Сделайте ссылку.
  4. Посмотрите, какие проблемы с этим возникают - это найдет, он регистрирует ошибку при ее открытии. Procmon будет регистрировать каждый отдельный файл, читать, закрыть и т. Д. Если он получит ошибку, он будет регистрировать его.
  5. Также убедитесь, что он может найти файл .ILK - я думаю, что это тоже нужно.

(Также в темноте) Одна из возможных причин заключается в том, что вы используете заголовок по всему проекту, ссылаясь на __DATE__ макро. Но в этом случае вы также увидите полную перекомпиляцию (не так ли?)

В моем случае я получил эту ошибку вчера.

Против набора code generation > runtime Library к Multi-threaded Debug DLL (/MDd) вместо Multi-threaded Debug (/MTd).

Если я воссоздаю новый проект, эти плохие настройки снова случаются. Я вручную переключаюсь на /Mtd, тогда нет ошибки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top