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

Линкер

Программа, которая склеивает объектные файлы (.obj) и библиотеки (.lib) в один исполняемый файл (.exe) и связывает вызовы функций с их кодом.

После компилятора у тебя есть main.obj, но в нём не хватает кода: например, того, что печатает текст через std::cout. Этот код лежит в стандартной библиотеке — в файлах .lib, которые пришли вместе с Visual Studio.

Сам шаг называется линковкой. В MSVC линкер — это программа link.exe.

Линкер берёт main.obj, находит недостающие функции в библиотеках и записывает всё вместе в app.exe. Если функцию не нашёл ни в одном файле — сборка падает с ошибкой вроде:

error LNK2019: unresolved external symbol …

«Unresolved external symbol» — «не найдено внешнее имя»: кто-то вызывает функцию, а её кода нет ни в одном .obj и ни в одной .lib.

Ошибки линкера легко узнать по коду: они начинаются с LNK, а ошибки компилятора — с C.