Ошибка при загрузке функций opengl без загрузки библиотеки - PullRequest
0 голосов
/ 23 января 2019

Я действительно не знаю, что я делаю неправильно. Я не использую библиотеку загрузки, чтобы иметь больше контроля над своим кодом. Я использую ОС Windows.

#include <gl/GL.h>
#include <windows.h>

typedef BOOL(WINAPI wglSwapInterval_t) (int interval);
static wglSwapInterval_t* wglSwapInterval;

#ifndef GLAPI
#define GLAPI extern
#endif

#ifndef APIENTRYP
#define APIENTRYP APIENTRY *
#endif

#define GL_VERTEX_SHADER 0x8B31
#define GL_FRAGMENT_SHADER 0x8B30

typedef GLuint(APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
PFNGLCREATEPROGRAMPROC glCreateProgram = (PFNGLCREATEPROGRAMPROC)wglGetProcAddress("glCreateProgram");

Ошибка:

(5): error C2086: 'wglSwapInterval_t (__stdcall *__stdcall wglSwapInterval)': redefinition
(5): note: see declaration of 'wglSwapInterval'
(19): error C2374: 'glCreateProgram': redefinition; multiple initialization
(19): note: see declaration of 'glCreateProgram'

1 Ответ

0 голосов
/ 23 января 2019
  • Ошибка C2086 говорит о том, что вы определили wglSwapInterval несколько раз.

  • Ошибка C2374 говорит о том, чтовы определили и инициализировали glCreateProgram несколько раз.

Общая причина таких проблем заключается в том, что неохраняемый файл .h более одного раза прямо или косвенно включается в один файл .cpp.(то есть включается в другой файл, который сам включен в текущий файл).

Чтобы избежать таких проблем, всегда ставьте #ifndef или #pragma once в свои файлы .h, так как include guard .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...