Невозможно использовать glew.h на Linux (Ubuntu) - PullRequest
1 голос
/ 17 января 2020

Недавно я перешел на Linux с Windows и пытался пройти курс Удеми, который первоначально преподавался в Visual Studio на Windows.

Мне нужно использовать два заголовочных файла glfw3.h и glew.h в курсе.

Я могу импортировать glfw3.h и использовать его просто отлично, но функция glew.h показывает некоторые ошибки.

Я использовал код sudo apt-get install libglew-dev для получения файлов библиотеки. Но все равно ошибка выскакивает.

КОД:

    #include <GLFW/glfw3.h>
    #include <GL/glew.h>

    int main(void)
    {}

СООБЩЕНИЕ ОБ ОШИБКЕ:

In file included from Lesson01.cpp:2:0:
/usr/include/GL/glew.h:85:2: error: #error gl.h included before glew.h
#error gl.h included before glew.h
^~~~~

In file included from Lesson01.cpp:2:0:
/usr/include/GL/glew.h:16088:93: error: conflicting declaration     
‘typedef void (* PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum, GLfloat*)’
LAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat*    
params);
     ^

In file included from /usr/include/GL/gl.h:2055:0,
             from /usr/include/GLFW/glfw3.h:171,
             from Lesson01.cpp:1:
/usr/include/GL/glext.h:12070:25: note: previous declaration as  
‘typedef void (* PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum, const     
GLfloat*)’typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)   
(GLenum pname, const GLfloat *params);
                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In file included from Lesson01.cpp:2:0:
/usr/include/GL/glew.h:16090:91: error: conflicting declaration 
‘typedef void (* PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum, GLint*)’
(GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint*  
params);
     ^

In file included from /usr/include/GL/gl.h:2055:0,
             from /usr/include/GLFW/glfw3.h:171,
             from Lesson01.cpp:1:
/usr/include/GL/glext.h:12072:25: note: previous declaration as   
‘typedef void (* PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum, const 
GLint*)’ typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) 
(GLenum pname, const GLint *params);
                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1 Ответ

0 голосов
/ 17 января 2020

Как рекомендует ваш компилятор, порядок включаемых файлов имеет значение:

error: #error gl.h included before glew.h

Просто инвертируйте две первые строки:

#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main(void)
{ 
    return 0;
}
...