Движок с нуля
Справочник

Линковка

Шаг сборки после компиляции: объектные файлы и библиотеки склеиваются в один .exe, а каждый вызов функции связывается с её кодом.

Линковка — это второй шаг сборки. После компиляции у каждого .cpp есть свой .obj, но по отдельности они не программа: в main.obj написано «здесь вызывается std::cout», а самого кода std::cout в нём нет.

Выполняет линковку линкер. Линкер делает две вещи:

  1. Склеивает все .obj и нужные части .lib в один app.exe.
  2. Связывает каждый вызов с кодом функции: заменяет пометку «здесь вызывается std::cout» адресом, где этот код лежит.

Если для вызова кода не нашлось, линковка падает с ошибкой LNK2019.

Поэтому библиотеку достаточно прилинковать: она уже скомпилирована, и компилировать её заново не нужно.