main.cpp не видит заголовочный файл

Наверное глупый вопрос, извините уж) Ну или видит его, и проблема в чем-то другом.

введите сюда описание изображения

math.h

#ifndef MATH_H
#define MATH_H

int getSquareSides()
{
    return 4;
}

#endif

geometry.h

#include "math.h"

Буду очень благодарен за любые рекомендации и помощь.


Ответы (2 шт):

Автор решения: Harry

Ваша проблема в том, что geometry.h в вашем проекте - исходный компилируемый файл, а не файл заголовка (см. правую часть скриншота). Кстати, текст ошибки недвусмысленно указывает на существование geometry.obj.

Вот вы и компилируете и получаете одну и ту же функцию в двух объектных файлах, и компоновщик оказывается в роли буриданова ишака, не понимая, какую же из функций выбрать...

→ Ссылка
Автор решения: Павел Ериков

Я думаю вы добавили в папку "Исходные файлы" сначала файл geometry.cpp, а потом переименовали его в geometry.h. Т.к. я воспроизвел у себя такую же ситуацию и получаю такие же ошибки.

Это происходит потому, что когда вы создаете .cpp файл, то ему в Visual Studio присваивается тип "Компилятор С/С++"

Чтобы исправить эти ошибки:

  1. Можно удалить полностью файл geometry.h и сразу создавайте файл, как "Файл заголовка" (.h).
  2. Щелкнуть правой кнопкой по нему, потом Свойства и изменить тип на "Заголовок C/C++"

Ну и лучше все таки создавать его в папке "Файлы заголовков", хотя роли не играет особо.

→ Ссылка