Ответ 1
Вы обновили проект до Visual Studio 2010 из предыдущей версии? Если это так, это хорошо известная проблема.
Руководство по обновлению проекта Visual Studio 2010 С++ http://blogs.msdn.com/b/vcblog/archive/2010/03/02/visual-studio-2010-c-project-upgrade-guide.aspx
Предупреждения во время обновления
Вот некоторые из распространенных предупреждений, которые вы можете запустить во время преобразования:
1) Каталог выходных данных компоновщика
Одно из предупреждений, которые вы можете увидеть при обновлении ваших приложений, - это значение MSB8012: $(TargetPath) и Linkers OutputFile не соответствует:
MSB8012: $(TargetExt) ('.dll') не соответствует значению свойства Linker OutputFile 'C:\foo\Debug\MFCActiveX.ocx' ('.ocx') в конфигурации проекта 'Debug | Win32'. Это может привести к неправильному построению вашего проекта. Чтобы исправить это, убедитесь, что значение свойства $(TargetExt) соответствует значению, указанному в% (Link.OutputFile).
MSB8012: $(TargetPath) ('C:\foo\Debug\MFCActiveX.dll') не соответствует значению свойства Linker OutputFile 'C:\foo\Debug\MFCActiveX.ocx' ('C:\foo\Debug\MFCActiveX.ocx ') в конфигурации проекта' Debug | Win32 '. Это может привести к неправильному построению вашего проекта. Чтобы исправить это, убедитесь, что значение свойства $(TargetPath) соответствует значению, указанному в% (Link.OutputFile).
Link.OutputFile - это значение, определенное в файле Linker → General → Output на странице свойств. По умолчанию его значение равно $(OutDir) $(TargetName) $(TargetExt), что совпадает с значением $(TargetPath). Однако, когда мы конвертируем приложение из предыдущей версии, нет простого способа конвертации для разбора Link.OutputFile, чтобы выяснить, какие именно значения для $(TargetName) и $(TargetExt), поскольку разные клиенты могут отформатировать их по-разному. Чтобы обойти это, мы решили сохранить значение Linker.OutputFile во время преобразования. После преобразования значение $(TargetName) будет по умолчанию равно $(ProjectName). $(TargetExt) по умолчанию будет использовать расширение по умолчанию для типа приложения:.dll для Dynamic Library,.lib для статической библиотеки и .exe для приложения. Значение Link.OutputFile будет сохранено. Предупреждение MSB8012 будет выпущено в журнале конверсии, если Link.OutputFile и $(TargetPath) не совпадают. При создании приложения вы получите те же предупреждения.
$ (OutDir), $(TargetName) и $(TargetExt) отображаются на странице свойств General, как "Output Directory", "Target Name", "Target Extension", соответственно. Вы можете вручную изменить значения этих свойств, чтобы вы больше не получали предупреждение.Если ваш проект создает библиотеку импорта (Linker → Advanced → Import Library), вам может потребоваться изменить папку вывода в библиотеке импорта также после преобразования, если выходной каталог Linker не является выходным каталогом по умолчанию, В противном случае сгенерированный import lib может быть в другом каталоге, чем выход компоновщика.
Отладка. После преобразования по умолчанию устанавливается значение $(TargetPath). Возможно, вам придется внести изменения, чтобы правильный исполняемый файл был запущен после F5 (отладка) или Ctrl + F5 (запуск без отладки).