Visual Studio 2010 не выполняет автоматическое связывание статических библиотек из проектов, которые являются зависимостями, как это должно быть - PullRequest
57 голосов
/ 26 сентября 2010
  • Создание нового решения с помощью проекта командной строки консоли C ++
  • Создание нового проекта, статической библиотеки C ++
  • Создание проекта командной строки в зависимости от библиотеки
  • Убедитесь, что в разделе «Конфигурация => Компоновщик => Общие» («По умолчанию») включен «Зависимости библиотеки ссылок».
  • Visual Studio по-прежнему не будет связывать библиотеку.

    Как я могу это исправить?Работало в Visual Studio 2008.

Ответы [ 4 ]

80 голосов
/ 26 сентября 2010

Это все еще работает, но в VS 2010 оно было изменено :

"В VS2010 мы перестали поддерживать зависимости проекта, определяющие неявные ссылки, и мы также ввели новый способ определенияЗависимости проекта на уровне проекта. Поскольку ссылка на проект и зависимость от проекта являются близкими понятиями, применимыми к проекту, имело смысл объединить их в единообразном виде в файле проекта.Во фрагментах, приведенных ниже, единственное различие между определением ссылки на проект и определением зависимости проекта состоит в метаданных, которые определяют включение / исключение выходной сборки в / из основной командной строки ссылки проекта. Хотя мы не удалили диалоговое окно «Зависимости проекта», мырекомендуем определять новые зависимости проекта через диалоговое окно «Framework and References». Необходимо установить для свойства «Output Reference Assembly» в пользовательском интерфейсе страницы свойств значение false для зависимости проекта и значение true для пр.oject reference. "

Просто щелкните правой кнопкой мыши по консольному проекту, выберите« Свойства-> Общие свойства-> Каркас и ссылки-> Добавить новую ссылку »и добавьте статический проект библиотеки;также проверьте, что "Зависимость библиотеки ссылок" имеет значение True с правой стороны.Кажется, работает для отладки и выпуска сборок.Ты узнаешь что-то новое каждый день.;)

23 голосов
/ 26 сентября 2010

Они изменили пользовательский интерфейс для добавления зависимостей проекта C ++ в VS2010, но, как ни странно, без удаления старого пользовательского интерфейса или каким-либо образом, указав, что он больше не работает.

Чтобы создать зависимость в VS2010, вынеобходимо использовать «Добавить новую ссылку» (можно найти в свойствах проекта), а также, возможно, также в контекстном меню проекта (здесь нет VS для проверки)

Старый диалог «Зависимости проекта»в основном сломан сейчас.

8 голосов
/ 19 июля 2017

Для MSVC 14 (версия 2015 г.) щелкните правой кнопкой мыши проект, затем "Add->Reference..." и проверьте все необходимые зависимости.

Да, он изменился где-то между версиями 2010 и 2015 гг.Fun!

И если вы хотите связать проект с ресурсами в нем - вам нужно указать файл .res непосредственно в списке входных зависимостей компоновщика (диалоговое окно свойств проекта), так как он не 't подобран вышеупомянутой конфигурацией.

ОБНОВЛЕНИЕ

Все еще то же самое (новое) поведение в MSVC 2017

3 голосов
/ 26 сентября 2010

Я полагаю, что старый пользовательский интерфейс (зависимости) влияет на порядок сборки для Visual Studio при сборке из IDE для информации. Новая система конфигурации проекта встраивает ссылки в каждый файл проекта, так что вы можете создавать из-за пределов IDE (тогда как в предыдущих версиях вы не могли, потому что вы не получили бы автоматическое связывание для зависимостей, поскольку зависимости были сделаны только на уровне решения ).

Есть также некоторые проблемы с более сложными проектами в новой системе; В частности, для правильной сборки все получившиеся двоичные проекты должны иметь явные ссылки на каждую зависимую библиотеку, тогда как ранее они могли эффективно наследоваться от других зависимых библиотек. Однако та же самая причина.

...