Линкер
Программа, которая склеивает объектные файлы (.obj) и библиотеки (.lib) в один исполняемый файл (.exe) и связывает вызовы функций с их кодом.
После компилятора у тебя есть main.obj, но в нём не хватает кода: например, того,
что печатает текст через std::cout. Этот код лежит в стандартной библиотеке —
в файлах .lib, которые пришли вместе с Visual Studio.
Сам шаг называется
Линкер берёт main.obj, находит недостающие функции в библиотеках и записывает всё вместе в app.exe. Если функцию не нашёл ни в одном файле — сборка падает с ошибкой вроде:
error LNK2019: unresolved external symbol …
«Unresolved external symbol» — «не найдено внешнее имя»: кто-то вызывает функцию, а её кода нет ни в одном .obj и ни в одной .lib.
Ошибки линкера легко узнать по коду: они начинаются с LNK, а ошибки компилятора — с C.