Подтвердить что ты не робот

Ошибки ссылок Visual Studio 2012 со статическими библиотеками

Недавно я обновился до 2012 года с 2005 года (я уверен) и столкнулся с ошибками ссылок при создании моего решения. У меня не хватало идей после нескольких часов поиска google и потасовки. Я создал десятки проектов, поэтому я уверен, что я сделал все правильно, но, честно говоря, прошло несколько лет.

Итак, в качестве теста я создал новый проект. Я назвал это приложение, приложение Windows (.exe). Я создал второй проект под названием Core и пометил его как статическую библиотеку (.lib) в нем Тип конфигурации. Оба являются частью решения. В Core я добавил Test.cpp и Test.h, которые содержат небольшой класс, который имеет в нем простую функцию. Затем внутри окна Windows WinMain.cpp файла у меня есть WinMain(), где я вызываю этот тестовый класс с помощью теста CTest; test.Result();

Наряду с этим я установил, что Project App Dependencies проекта Core, и, наконец, добавил в App Additional Include Directories путь к базовому коду, где test.cpp/.h live.

Я получаю следующие ошибки ссылок и не могу для жизни понять, почему. Кто-нибудь знает, какой шаг я мог пропустить или что изменилось в 2012 году с предыдущих версий? Большое спасибо за помощь!

1>------ Build started: Project: App, Configuration: Debug Win32 ------
1>WinMain.obj : error LNK2019: unresolved external symbol "public: __thiscall CTest::CTest(void)" ([email protected]@[email protected]) referenced in function [email protected]
1>WinMain.obj : error LNK2019: unresolved external symbol "public: __thiscall CTest::~CTest(void)" ([email protected]@[email protected]) referenced in function [email protected]
1>WinMain.obj : error LNK2019: unresolved external symbol "public: int __thiscall CTest::Result(void)" ([email protected]@@QAEHXZ) referenced in function [email protected]
1>D:\Work\Test_Linker_Stupidity\App\Debug\App.exe : fatal error LNK1120: 3 unresolved externals
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ========
4b9b3361

Ответ 1

Visual Studio 2005 сделала магию с зависимостями проекта, где она автоматически связывается с любыми выходами .lib(к сожалению, разработчик помог реализовать ее). По-видимому, это было удалено, поскольку, как я подозреваю, Visual Studio 2010, когда старая система сборки Visual С++ была заменена на MSBuild.

Однако функция "автоматическое связывание статических библиотечных зависимостей" все еще может быть найдена через ссылки проекта:

  • Щелкните правой кнопкой мыши проект приложения и выберите "Ссылки..."
  • Нажмите "Добавить новую ссылку".
  • Проверьте проект статической библиотеки и нажмите OK.
  • Построить.

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

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

Изменить: также вы увидите свойство "Зависимости библиотеки ссылок" в ссылке на проект. Это определяет, связано ли соединение .lib с ссылочным проектом или нет (по умолчанию - true).