0

Всем привет. Я подключил SDL2 к Visual Studio 2022, чтобы сделать окно и работать с openGl. Я подключаю библиотеки SDL_opengl.h, gl/gl.h, gl/glu.h, но функции openGl вызывают ошибку, пишет ссылка на неразрешенный внешний символ. Подскажите как мне подключить функции openGL в SDL?

#include <cstdio>
#include <SDL.h>
#include <SDL_opengl.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <cstdlib>

int main(int argc, char* args[]) {

if (SDL_Init(SDL_INIT_VIDEO) &lt; 0) {
    exit(EXIT_FAILURE);
}

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 1);

SDL_Window* window = SDL_CreateWindow(&quot;Clock&quot;,
    100,
    100,
    600,
    600,
    SDL_WINDOW_OPENGL);

if (window == nullptr) {
    exit(EXIT_FAILURE);
}

bool gQuit = false;

while (!gQuit) {
    SDL_Event e;
    while (SDL_PollEvent(&amp;e) != 0) {
        if (e.type == SDL_QUIT) {
            gQuit = true;
        }

        // здесь вызывается ошибка
        // ссылка на неразрешенный внешний символ __imp_glClearColor в функции SDL_main.    
        glClearColor(0, 0, 0, 1);
        glClear(GL_COLOR_BUFFER_BIT);
        // Обновление и рисование сцены
        //UpdateCurrentScene();
        //DrawCurrentScene();
        // В конце - вывод нарисованного кадра в окно на экране
        SDL_GL_SwapWindow(window);
    }
 }

SDL_DestroyWindow(window);
SDL_Quit();

return 0;

}

Ahmed_08
  • 119

1 Answers1

0

Во первых,если я не ошибаюсь SDL2 предоставляет интерфейс для работы с OpenGL и вы его подключили здесь:

#include <SDL/SDL_opengl_.h>

И можно оставить только этот заголовочный файл для взаимодействия с OpenGL через SDL2, нет необходимости подключать:

#include <GL/GL.h>
#include <GL/glu.h>

Ошибка возникает скорее всего со стороны компоновщика(Linker), а не компилятора, так как у вас не подключены .lib/.dll файлы где описана реализация функций из

#include <GL/GL.h>
#include <GL/glu.h>
Allen
  • 49
  • 4
  • Я сделал всё по примеру как по этой ссылке https://www.andreyolegovich.ru/code/cpp/sdl.php но OpenGL не работает – Ahmed_08 Apr 16 '23 at 07:49
  • В примере как я вижу подключается

    #include <SDL2.h> #include

    – Allen Apr 16 '23 at 13:18
  • оказывается я не добавил openGL32.lib в параметры компоновщика – Ahmed_08 Apr 16 '23 at 14:06