I've been trying to compile this code for the better part of the day. I've tried modifying the code, searching the error, etc... I've even tried other dev environments (Dev C++ and Code::Blocks). I'm stumped. Any help would be most appreciated.
Here is the code I'm trying to compile
#include <windows.h>
#include <SDL.h>
#include <GL/gl.h>
int main(int argc, char **argv)
{
/* Initialize SDL as usual. */
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
printf("Error: %s\n", SDL_GetError());
return 1;
}
atexit(SDL_Quit);
/* Enable OpenGL double buffering. */
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
/* Set the color depth (16-bit 565). */
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
/* Create a 640x480, 16 bit window with support for
OpenGL rendering. Unfortunately we won’t know
whether this is hardware accelerated. */
if (SDL_SetVideoMode(640, 480, 16, SDL_OPENGL) == NULL) {
printf("Error: %s\n", SDL_GetError());
return 1;
}
/* Set a window title. */
SDL_WM_SetCaption("OpenGL with SDL!", "OpenGL");
/* We can now use any OpenGL rendering commands. */
glViewport(80, 0, 480, 480);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 1.0, 100.0);
glClearColor(0, 0, 0, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(1.0, 0, 0);
glVertex3f(0.0, 1.0, -2.0);
glColor3f(0, 1.0, 0);
glVertex3f(1.0, -1.0, -2.0);
glColor3f(0, 0, 1.0);
glVertex3f(-1.0, -1.0, -2.0);
glEnd();
glFlush();
/* Display the back buffer to the screen. */
SDL_GL_SwapBuffers();
/* Wait a few seconds. */
SDL_Delay(5000);
return 0;
}
This gives the following error:
Building main.obj.
Use <stdlib.h> instead of non-standard <malloc.h>
Building SDL_OPENGL.exe.
POLINK: error: Unresolved external symbol '__imp_glViewport'.
POLINK: error: Unresolved external symbol '__imp_glMatrixMode'.
POLINK: error: Unresolved external symbol '__imp_glLoadIdentity'.
POLINK: error: Unresolved external symbol '__imp_glFrustum'.
POLINK: error: Unresolved external symbol '__imp_glClearColor'.
POLINK: error: Unresolved external symbol '__imp_glClear'.
POLINK: error: Unresolved external symbol '__imp_glBegin'.
POLINK: error: Unresolved external symbol '__imp_glColor3f'.
POLINK: error: Unresolved external symbol '__imp_glVertex3f'.
POLINK: error: Unresolved external symbol '__imp_glEnd'.
POLINK: error: Unresolved external symbol '__imp_glFlush'.
POLINK: fatal error: 11 unresolved external(s).
*** Error code: 1 ***
Done.
If I make 1 change and remove all of the the gl drawing code it compiles and runs fine. Example:
#include <windows.h>
#include <SDL.h>
#include <GL/gl.h>
int main(int argc, char **argv)
{
/* Initialize SDL as usual. */
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
printf("Error: %s\n", SDL_GetError());
return 1;
}
atexit(SDL_Quit);
/* Enable OpenGL double buffering. */
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
/* Set the color depth (16-bit 565). */
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
/* Create a 640x480, 16 bit window with support for
OpenGL rendering. Unfortunately we won’t know
whether this is hardware accelerated. */
if (SDL_SetVideoMode(640, 480, 16, SDL_OPENGL) == NULL) {
printf("Error: %s\n", SDL_GetError());
return 1;
}
/* Set a window title. */
SDL_WM_SetCaption("OpenGL with SDL!", "OpenGL");
/* Display the back buffer to the screen. */
SDL_GL_SwapBuffers();
/* Wait a few seconds. */
SDL_Delay(5000);
return 0;
}
But then I can't draw anything so there is no point. :/
Any ideas?