Ваша ошибка не компилятор, а ошибка компоновщика. Это означает, что он все еще прекрасно компилируется, но не может связать.
Заголовочный файл включается (если он может быть найден в пути включения, который компилятор использует для поиска заголовков), так что это прекрасно работает.
Но для связывания двух (объектных) файлов необходимо знать, какие файлы должны быть связаны. И как он должен решить, какие файлы использовать?
Это является причиной для создания проектов в нем (и других IDE) или для создания make-файлов.
Если вы включаете полный вход из командной строки в систему «Настройки -> Компилятор и отладчик ... -> Глобальные настройки компилятора -> [the_compiler_you_use] -> Другие настройки (крайняя правая вкладка) -> Журнал компилятора» вы можете увидеть, какие команды отправляются компилятору / компоновщику и где разница между одним файлом и проектом с несколькими файлами.
Кстати: ваша книга / учебное пособие должны объяснить шаги, необходимые для компиляции и компоновки файлов, что происходит, если включены заголовки, и как использовать библиотеки / библиотеки предварительной сборки .