Файл свойств выходного файла компоновщика не соответствует targetpath? - PullRequest
15 голосов
/ 15 января 2011

Я пытаюсь скомпилировать .DLL для приложения под названием sierra chart.

Вот предупреждение, которое мне нужно исправить, так что все указывает на выходное значение компоновщика:

предупреждение MSB8012: TargetPath (C: \ SierraChart \ VCProject \ Release \ SCStudies.dll) не соответствует значению свойства OutputFile компоновщика (c: \ sierrachart \ data \ SCStudies.dll).Это может привести к неправильной сборке вашего проекта.Чтобы исправить это, убедитесь, что значения свойств $ (OutDir), $ (TargetName) и $ (TargetExt) соответствуют значению, указанному в% (Link.OutputFile).C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Microsoft.CppBuild.targets

Есть идеи?

Ответы [ 7 ]

9 голосов
/ 14 февраля 2012

Я считаю, что это предупреждение появляется специально при обновлении проекта C ++ до VS2010. Руководство по обновлению проекта Visual Studio 2010 C ++ описывает некоторые предупреждения, возникающие при обновлении.Если вам неудобно изменять настройки проекта, то сохранение старой версии Visual Studio может помочь вам.

Чтобы изменить %(Link.OutputFile), откройте свойства проекта.Перейдите в Свойства конфигурации -> Линкер -> Общие.Вы можете установить для выходного файла значение $(OutDir)\SCStudies.dll, которое должно решить вашу проблему.Возможно, вам придется повторить изменение для каждой конфигурации / версии, которую вы будете создавать (Debug / x86, Release / x86, Debug / Itanium и т. Д.).

6 голосов
/ 01 апреля 2016

На основании этого ответа .

Я изменил следующее свойство:

Компоновщик -> Общее -> Выходной файл на "$ (OutDir) $(TargetName) $ (TargetExt) "

Это предотвратило появление предупреждения, и вывод был сгенерирован успешно.

1 голос
/ 17 февраля 2017

Другое исправление, которое другие не упомянули, заключается в том, что по умолчанию TargetExt равен .exe, и для моих отладочных сборок я изменил его на _d.exe, где вместо этого вы должны делать это по пути TargetName.

1 голос
/ 10 марта 2013

Исходная конфигурация была установлена ​​следующим образом:

Свойства -> Линкер -> Общие: $(OutDir)\"<'name fileA>".exe

Программа пытается запустить "<'name_project>".exe и как результат ошибка Linked.

Необходимо настроить конфигурацию следующим образом:

Свойства -> Linker -> General: $(OutDir)\"<'project name>".exe

0 голосов
/ 09 марта 2018

Мне помог комментарий от Херардо Эрнандеса.

Каталог, указанный в General-> Output Directory, и каталог, указанный в пути в Linker-> Output File, должны совпадать.

В моем случае я импортировал большой проект из Visual Studio 6, и

C:\Project\myproject\OneOfMyDlls\.\Debug\OneOfMyDlls.dll

не было равно

C:\Project\myproject\Debug\OneOfMyDlls.dll

но

C:\Project\myproject\OneOfMyDlls\..\Debug\OneOfMyDlls.dll

было бы после сокращения пути.

Проблема заключалась в том, что импорт Visual Studio 2017 изменил каталог вывода с ..\Debug до .\Debug при условии, что нетрадиционное использование родительского каталога было ошибкой.В большом проекте с 13 собственными DLL-библиотеками (не говоря уже о DLL сторонних и сторонних разработчиков) имеет смысл собрать все библиотеки DLL в одном месте, и ..\Debug было правильным.

Так что другие могутпришлось изменить Linker->Output File, в моем случае это был General->Output Directory, который нужно было изменить, поскольку он был поврежден при импорте из Visual Studio 6.

Что-то вроде ..\Debug стало чем-то вроде .\Debug после импорта(Реальные конкретные имена проектов были удалены.)

0 голосов
/ 10 января 2018

Каталог, указанный в General-> Output Directory, и каталог, указанный в пути в Linker-> Output File, должны совпадать.

Если вы хотите изменить значения по умолчанию, выполните следующие действия: Сначала вы настраиваете OutDir в General-> Output Directory. Э.Г.

$(SolutionDir)$(Platform)\$(Configuration)\MyProgram\

Убедитесь, что выходной файл соответствует. Например. это будет работать

$(OutDir)\$(TargetName)$(TargetExt)
0 голосов
/ 15 января 2011
...