Newbie question - linker issues with SDL and OpenGL

Started by
0 comments, last by leonardteo 14 years ago
Hi guys, I've just started coding with SDL and OpenGL and I'm having a bizarre issue with linking OpenGL. I am using Visual Studio 2008, Windows 7 x64. When I compile/link, none of the native OpenGL function calls seem to be resolving.... The errors are: error LNK2019: unresolved external symbol __imp__glFlush@0 referenced in function "void __cdecl leodraw(void)" (?leodraw@@YAXXZ) error LNK2019: unresolved external symbol __imp__glEnd@0 referenced in function "void __cdecl leodraw(void)" (?leodraw@@YAXXZ) etc.... basically, every native OpenGL call is unresolved. This is very strange. gl\gl.h and glu.h are included in the SDL_opengl.h header. Anyone know what I'm doing wrong here? Thanks in advance, Leonard

#include <SDL.h>
#include <SDL_opengl.h>
#include <stdio.h>

const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
const int SCREEN_BPP = 32;

void leodraw(){
	glClearColor(0.0, 0.0, 0.0, 0.0);
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 1.0, 1.0);
	glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
	glBegin(GL_POLYGON);
		glVertex3f(0.25, 0.25, 0.0);
		glVertex3f(0.75, 0.25, 0.0);
		glVertex3f(0.75, 0.75, 0.0);
		glVertex3f(0.25, 0.75, 0.0);
	glEnd();
	glFlush();
	SDL_GL_SwapBuffers();

}

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

	printf("Firing up SDL OpenGL...\n");

	//Initialize
	if (SDL_Init(SDL_INIT_EVERYTHING) < 0){
		return -1;
	} else {
		printf("Initialized SDL\n");
	}

	//Set opengl attributes
    SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );
    SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );
    SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );
    SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
    SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );


	if (SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_OPENGL) == 0){
		return -1;
	} else {
		printf("Set video mode %ix%ix%i", SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP);
	}

	SDL_WM_SetCaption("OpenGL Test", "OpenGL Test");

	bool quit = false;
	SDL_Event event;

	while (!quit){
		if (SDL_PollEvent(&event)){
			if (event.type == SDL_QUIT){
				quit = true;
				break;
			}
		}
	}

	SDL_Quit();
	return 1;

} ///end main

Advertisement
Hey I figured it out....

You have to add OpenGL32.lib to the project's additional dependencies.

Yay

This topic is closed to new replies.

Advertisement