VS2010 LNK1181 при перестройке проекта с зависимостью
У меня есть решение с двумя проектами С++ (CLR). Один проект ссылается на другой, поэтому проектные зависимости и порядок сборки правильно отражают это. Оба проекта предназначены для одной и той же выходной папки. Зависимый проект имеет зависимость, настроенную с помощью Copy Local: false
.
Если я "перестрою" зависимость самостоятельно, она строит отлично, а ее целевые объекты находятся в выходном каталоге.
Когда я "перестрою" решение (или зависимый проект), я получаю:
error LNK1181: cannot open input file '<outdir>\Dependency.lib'
Разумеется, выходы зависимостей исчезнут из выходного каталога. Если я смотрю на журнал построения, зависимость, похоже, была правильно построена (re), но затем эти результаты, кажется, были удалены, как только начнется сборка зависимого проекта. Почему это произойдет?
Кроме того, когда я "очищаю" решение, сразу же "создаю" решение, я не получаю никаких ошибок.
Разве не "перестроить", по-видимому, "Clean + Build"?
Ответы
Ответ 1
Перестройка в Visual Studio очищает и строит проекты один за другим, так что, вероятно, это происходит
- Проект A очищается.
- Скомпилирован проект A.
- Проект B очищается, удаляя части выхода из Project A из-за того же выходного каталога.
- Проект B не работает из-за отсутствующих зависимостей.
Подробнее обсуждение здесь.
Ответ 2
Второй проект удаляет что-либо из своего выходного каталога при выполнении перестройки. Очистка не различает файлы, которые являются выходными данными проекта bonafide, и другими файлами. Clean All, за которым следует Build All, не вызывает его, потому что нет очистки выходной папки между созданием проектов. Короче говоря, Visual Studio не поддерживает несколько проектов, выводимых в одну и ту же папку. Выведите их в свои местоположения по умолчанию, а затем позвольте зависимостям от копирования Visual Studio, как это было предназначено/предназначено для выполнения.