Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualZexanima

Posted 31 July 2012 - 12:50 PM

I just started learning OpenGL and I'm using SDL with it. I'm having problems including glew. I've made sure it's included before SDL_opengl.h . I'm getting errors such as:

undefined referance to '_imp___GlewGenBuffers'


here is the code

Graphics.h
[source lang="cpp"]#ifndef GRAPHICS_H#define GRAPHICS_H#define NO_SDL_GLEXT#include "GL/glew.h"#include "SDL/SDL.h"#include "SDL/SDL_opengl.h"#include "Texture.h"#include <iostream>namespace ColdFusion{ class Graphics { public: Graphics(); bool initScreen(int w, int h, int bpp, std::string caption); void drawSquare(int w, int h, int x, int y, GLuint tex); void clearBuffer(); void swapBuffer(); ~Graphics(); protected: private: bool initGL(int w, int h); };}#endif // GRAPHICS_H[/source]

Graphics.cpp(Line 60 is where I hit the first error.)

[source lang="cpp"]#include "Graphics.h"#include "SDL/SDL.h"#include "SDL/SDL_opengl.h"#include "Texture.h"namespace ColdFusion{ Graphics::Graphics() { } bool Graphics::initScreen(int w, int h, int bpp, std::string caption) { if(SDL_Init(SDL_INIT_EVERYTHING) < 0) { return false; } if(SDL_SetVideoMode(w,h,bpp,SDL_OPENGL) == NULL) { return false; } if(initGL(w,h) == NULL) { return false; } SDL_WM_SetCaption(caption.c_str(),NULL); return true; } bool Graphics::initGL(int w, int h) { glEnable(GL_TEXTURE_2D); glClearColor(0,0,0,0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,w,h,0,-1,1); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); if(glGetError() != GL_NO_ERROR) { return false; } return true; } void Graphics::drawSquare(int w, int h, int x, int y, GLuint tex) { static const GLfloat g_vertex_buffer_data[] = { 1.0f,-1.0f,0.0f, -1.0f,-1.0f,0.0f, -1.0f,1.0f,0.0f }; GLuint vertex_buffer; glGenBuffers(1, &vertex_buffer); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data,GL_STATIC_DRAW); // 1rst attribute buffer : vertices glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); glVertexAttribPointer( 0, // attribute 0. No particular reason for 0, but must match the layout in the shader. 3, // size GL_FLOAT, // type GL_FALSE, // normalized? 0, // stride (void*)0 // array buffer offset ); // Draw the triangle ! glDrawArrays(GL_TRIANGLES, 0, 3); // Starting from vertex 0; 3 vertices total -> 1 triangle glDisableVertexAttribArray(0); } void Graphics::clearBuffer() { glClear(GL_COLOR_BUFFER_BIT); } void Graphics::swapBuffer() { SDL_GL_SwapBuffers(); } Graphics::~Graphics() { }}[/source]

Errors

D:\cold-fusion-engine\ColdFusion\src\Handler.cpp||In member function 'int ColdFusion::Handler::Execute()':|
D:\cold-fusion-engine\ColdFusion\src\Handler.cpp|29|warning: control reaches end of non-void function|
D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp||In member function 'bool ColdFusion::Graphics::initScreen(int, int, int, std::string)':|
D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|25|warning: NULL used in arithmetic|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|60|undefined reference to `_imp____glewGenBuffers'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|61|undefined reference to `_imp____glewBindBuffer'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|63|undefined reference to `_imp____glewBufferData'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|66|undefined reference to `_imp____glewEnableVertexAttribArray'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|67|undefined reference to `_imp____glewBindBuffer'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|75|undefined reference to `_imp____glewVertexAttribPointer'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|80|undefined reference to `_imp____glewDisableVertexAttribArray'|
||=== Build finished: 7 errors, 2 warnings ===|

Any idea's to what I could be doing wrong? I realize others have asked questions very similar to this but their solution didn't help me.

#1Zexanima

Posted 31 July 2012 - 12:49 PM

I just started learning OpenGL and I'm using SDL with it. I'm having problems including glew. I've made sure it's included before SDL_opengl.h . I'm getting errors such as:

undefined referance to '_imp___GlewGenBuffers'


here is the code

Graphics.h
[source lang="cpp"]#ifndef GRAPHICS_H#define GRAPHICS_H#define NO_SDL_GLEXT#include "GL/glew.h"#include "SDL/SDL.h"#include "SDL/SDL_opengl.h"#include "Texture.h"#include <iostream>namespace ColdFusion{ class Graphics { public: Graphics(); bool initScreen(int w, int h, int bpp, std::string caption); void drawSquare(int w, int h, int x, int y, GLuint tex); void clearBuffer(); void swapBuffer(); ~Graphics(); protected: private: bool initGL(int w, int h); };}#endif // GRAPHICS_H[/source]

Graphics.cpp(Line 60 is where I hit the first error.)

[source lang="cpp"]#include "Graphics.h"#include "SDL/SDL.h"#include "SDL/SDL_opengl.h"#include "Texture.h"namespace ColdFusion{ Graphics::Graphics() { } bool Graphics::initScreen(int w, int h, int bpp, std::string caption) { if(SDL_Init(SDL_INIT_EVERYTHING) < 0) { return false; } if(SDL_SetVideoMode(w,h,bpp,SDL_OPENGL) == NULL) { return false; } if(initGL(w,h) == NULL) { return false; } SDL_WM_SetCaption(caption.c_str(),NULL); return true; } bool Graphics::initGL(int w, int h) { glEnable(GL_TEXTURE_2D); glClearColor(0,0,0,0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,w,h,0,-1,1); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); if(glGetError() != GL_NO_ERROR) { return false; } return true; } void Graphics::drawSquare(int w, int h, int x, int y, GLuint tex) { static const GLfloat g_vertex_buffer_data[] = { 1.0f,-1.0f,0.0f, -1.0f,-1.0f,0.0f, -1.0f,1.0f,0.0f }; GLuint vertex_buffer; glGenBuffers(1, &vertex_buffer); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data,GL_STATIC_DRAW); // 1rst attribute buffer : vertices glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); glVertexAttribPointer( 0, // attribute 0. No particular reason for 0, but must match the layout in the shader. 3, // size GL_FLOAT, // type GL_FALSE, // normalized? 0, // stride (void*)0 // array buffer offset ); // Draw the triangle ! glDrawArrays(GL_TRIANGLES, 0, 3); // Starting from vertex 0; 3 vertices total -> 1 triangle glDisableVertexAttribArray(0); } void Graphics::clearBuffer() { glClear(GL_COLOR_BUFFER_BIT); } void Graphics::swapBuffer() { SDL_GL_SwapBuffers(); } Graphics::~Graphics() { }}[/source]

Errors

D:\cold-fusion-engine\ColdFusion\src\Handler.cpp||In member function 'int ColdFusion::Handler::Execute()':|
D:\cold-fusion-engine\ColdFusion\src\Handler.cpp|29|warning: control reaches end of non-void function|
D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp||In member function 'bool ColdFusion::Graphics::initScreen(int, int, int, std::string)':|
D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|25|warning: NULL used in arithmetic|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|60|undefined reference to `_imp____glewGenBuffers'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|61|undefined reference to `_imp____glewBindBuffer'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|63|undefined reference to `_imp____glewBufferData'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|66|undefined reference to `_imp____glewEnableVertexAttribArray'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|67|undefined reference to `_imp____glewBindBuffer'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|75|undefined reference to `_imp____glewVertexAttribPointer'|
obj\Debug\src\Graphics.o:D:\cold-fusion-engine\ColdFusion\src\Graphics.cpp|80|undefined reference to `_imp____glewDisableVertexAttribArray'|
||=== Build finished: 7 errors, 2 warnings ===|

Any idea's to what I could be doing wrong?

PARTNERS