1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\minwindef.h(130,1): warning C4005: APIENTRY: изменение макроопределения
1>C:\libs\GL\GL\gl.h(78): message : см. предыдущее определение "APIENTRY"
Что это значит?
Если перенести #include <Windows.h> в Font.cpp, то предупреждение пропадает. Если начать менять инклюды местами, предупреждений становится либо больше либо меньше.
А когда проект начнёт разрастаться, вероятно, будет подключена ещё куча библиотек, всё будет друг от друга зависеть и будет миллион таких предупреждений? Как этого избежать?
Насколько понимаю, не 100% одно и то же, есть свои нюансы. Можно добавить guard только в font.h, а не сразу во все заголовочные файлы проекта, чтобы проверить, уйдет ли предупреждение. Хотя теперь начинаю подозревать неподходящие файлы библиотек. Например, в GL.h (из состава Windows SDKs) APIENTRY только используется, но не определяется.
Я не подключаю каждый день ОпенГЛ библиотеки к кроссплатформенным проектам, так что всех тонкостей не знаю. В винде заголовочный файл идет в составе Windows SDK, в убунте в пакете mesa-common-dev (c++ - How to get the GL library/headers? - Stack Overflow). Не знаю, одинаковые ли это файлы или нет. Вы можете сравнить скачанный вами где-то файл, с тем, что доступен для вашей ОС, чтобы выявить различия.
Скачал windows SDK. Теперь появились новые ошибки, которых раньше не было.
Если подключить только glfw3.h, то он не видит функцию gluPerspective (в теории, можно и без неё обойтись). А если подключить glu.h, то выдаёт кучу ошибок
Спасибо. Ещё не пробовал. Но, видимо, проблема в этом.
В библиотеке stb_image тоже надо добавить какую-то длинную хрень, без которой ни одна её функция не видна. А зачем так делают? Почему нельзя сразу все функции определить?