visual studio - Build error when trying to run an OpenGL example in VC -


what can''t understand why both 2 individual .cpp files compile solution not build. code won't compile though follow instructions is

// two-dimensional sierpinski gasket        // generated using randomly selected vertices , bisection    #include "angel.h" #include <gl/glut.h> #include <gl/glew.h>  #pragma comment(lib, "glew32.lib")  const int numpoints = 5000;  //----------------------------------------------------------------------------  void init( void ) {      vec2 points[numpoints];      // specifiy vertices triangle     vec2 vertices[3] = {         vec2( -1.0, -1.0 ), vec2( 0.0, 1.0 ), vec2( 1.0, -1.0 )     };      // select arbitrary initial point inside of triangle     points[0] = vec2( 0.25, 0.50 );      // compute , store n-1 new points     ( int = 1; < numpoints; ++i ) {         int j = rand() % 3;   // pick vertex @ random          // compute point halfway between selected vertex         //   , previous point         points[i] = ( points[i - 1] + vertices[j] ) / 2.0;     }      // create vertex array object     gluint vao;     glgenvertexarrays( 1, &vao );     glbindvertexarray( vao );      // create , initialize buffer object     gluint buffer;     glgenbuffers( 1, &buffer );     glbindbuffer( gl_array_buffer, buffer );     glbufferdata( gl_array_buffer, sizeof(points), points, gl_static_draw );      // load shaders , use resulting shader program     gluint program = initshader( "vshader21.glsl", "fshader21.glsl" );     gluseprogram( program );      // initialize vertex position attribute vertex shader     gluint loc = glgetattriblocation( program, "vposition" );     glenablevertexattribarray( loc );     glvertexattribpointer( loc, 2, gl_float, gl_false, 0,                            buffer_offset(0) );      glclearcolor( 1.0, 1.0, 1.0, 1.0 ); // white background }  //----------------------------------------------------------------------------  void display( void ) {     glclear( gl_color_buffer_bit );     // clear window     gldrawarrays( gl_points, 0, numpoints );    // draw points     glflush(); }  //----------------------------------------------------------------------------  void keyboard( unsigned char key, int x, int y ) {     switch ( key ) {     case 033:         exit( exit_success );         break;     } }  //----------------------------------------------------------------------------  int main( int argc, char **argv ) {      glutinit(&argc, argv);     glutinitdisplaymode( glut_rgba );     glutinitwindowsize( 512, 512 );      // if using freeglut, next 2 lines check if      // code 3.2. otherwise, comment them out       glutinitcontextversion( 3, 1 );      glutinitcontextprofile( glut_core_profile );      glutcreatewindow( "sierpinski gasket" );         glewinit();      init();      glutdisplayfunc( display );     glutkeyboardfunc( keyboard );      glutmainloop();     return 0; } 

i strange error message when try build example project edward angel's opengl site:

1>------ build started: project: 6e test, configuration: release win32 ------ 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewbindbuffer 1>example1.obj : error lnk2001: unresolved external symbol __imp____glutcreatewindowwithexit@8 1>example1.obj : error lnk2001: unresolved external symbol __imp____glutinitwithexit@12 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewvertexattribpointer 1>example1.obj : error lnk2001: unresolved external symbol __imp__glewinit@0 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewgenvertexarrays 1>example1.obj : error lnk2001: unresolved external symbol __imp__glutinitcontextprofile@4 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewuseprogram 1>example1.obj : error lnk2001: unresolved external symbol __imp__glutinitcontextversion@8 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewbufferdata 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewbindvertexarray 1>example1.obj : error lnk2001: unresolved external symbol __imp__glutinitdisplaymode@4 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewgetattriblocation 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewgenbuffers 1>example1.obj : error lnk2001: unresolved external symbol __imp__glutkeyboardfunc@4 1>example1.obj : error lnk2001: unresolved external symbol __imp__glutmainloop@0 1>example1.obj : error lnk2001: unresolved external symbol __imp__glutinitwindowsize@8 1>example1.obj : error lnk2001: unresolved external symbol __imp__glutdisplayfunc@4 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewenablevertexattribarray 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewcreateshader 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewgetshaderinfolog 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewlinkprogram 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewcompileshader 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewshadersource 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewgetprogramiv 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewgetshaderiv 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewgetprograminfolog 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewcreateprogram 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewattachshader 1>c:\users\student\downloads\6e_example1_vc10\6e test\release\6e test.exe : fatal error lnk1120: 29 unresolved externals ========== build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

it looks me i've tried link in incompatible libraries, above you? complete source code try run (with windows 7) is

// two-dimensional sierpinski gasket        // generated using randomly selected vertices , bisection #pragma comment(lib, "glew32.lib") #include "angel.h"  const int numpoints = 5000;  //----------------------------------------------------------------------------  void init( void ) {      vec2 points[numpoints];      // specifiy vertices triangle     vec2 vertices[3] = {         vec2( -1.0, -1.0 ), vec2( 0.0, 1.0 ), vec2( 1.0, -1.0 )     };      // select arbitrary initial point inside of triangle     points[0] = vec2( 0.25, 0.50 );      // compute , store n-1 new points     ( int = 1; < numpoints; ++i ) {         int j = rand() % 3;   // pick vertex @ random          // compute point halfway between selected vertex         //   , previous point         points[i] = ( points[i - 1] + vertices[j] ) / 2.0;     }      // create vertex array object     gluint vao;     glgenvertexarrays( 1, &vao );     glbindvertexarray( vao );      // create , initialize buffer object     gluint buffer;     glgenbuffers( 1, &buffer );     glbindbuffer( gl_array_buffer, buffer );     glbufferdata( gl_array_buffer, sizeof(points), points, gl_static_draw );      // load shaders , use resulting shader program     gluint program = initshader( "vshader21.glsl", "fshader21.glsl" );     gluseprogram( program );      // initialize vertex position attribute vertex shader     gluint loc = glgetattriblocation( program, "vposition" );     glenablevertexattribarray( loc );     glvertexattribpointer( loc, 2, gl_float, gl_false, 0,                            buffer_offset(0) );      glclearcolor( 1.0, 1.0, 1.0, 1.0 ); // white background }  //----------------------------------------------------------------------------  void display( void ) {     glclear( gl_color_buffer_bit );     // clear window     gldrawarrays( gl_points, 0, numpoints );    // draw points     glflush(); }  //----------------------------------------------------------------------------  void keyboard( unsigned char key, int x, int y ) {     switch ( key ) {     case 033:         exit( exit_success );         break;     } }  //----------------------------------------------------------------------------  int main( int argc, char **argv ) {      glutinit(&argc, argv);     glutinitdisplaymode( glut_rgba );     glutinitwindowsize( 512, 512 );      // if using freeglut, next 2 lines check if      // code 3.2. otherwise, comment them out       glutinitcontextversion( 3, 1 );      glutinitcontextprofile( glut_core_profile );      glutcreatewindow( "sierpinski gasket" );         glewinit();      init();      glutdisplayfunc( display );     glutkeyboardfunc( keyboard );      glutmainloop();     return 0; }   #pragma comment(lib, "glew32.lib") #include "angel.h"  namespace angel {  // create null-terminated string reading provided file static char* readshadersource(const char* shaderfile) {     file* fp = fopen(shaderfile, "r");      if ( fp == null ) { return null; }      fseek(fp, 0l, seek_end);     long size = ftell(fp);      fseek(fp, 0l, seek_set);     char* buf = new char[size + 1];     fread(buf, 1, size, fp);      buf[size] = '\0';     fclose(fp);      return buf; }   // create glsl program object vertex , fragment shader files gluint initshader(const char* vshaderfile, const char* fshaderfile) {     struct shader {     const char*  filename;     glenum       type;     glchar*      source;     }  shaders[2] = {     { vshaderfile, gl_vertex_shader, null },     { fshaderfile, gl_fragment_shader, null }     };      gluint program = glcreateprogram();       ( int = 0; < 2; ++i ) {     shader& s = shaders[i];     s.source = readshadersource( s.filename );     if ( shaders[i].source == null ) {         std::cerr << "failed read " << s.filename << std::endl;         exit( exit_failure );     }      gluint shader = glcreateshader( s.type );      glshadersource( shader, 1, (const glchar**) &s.source, null );     glcompileshader( shader );      glint  compiled;     glgetshaderiv( shader, gl_compile_status, &compiled );     if ( !compiled ) {         std::cerr << s.filename << " failed compile:" << std::endl;         glint  logsize;         glgetshaderiv( shader, gl_info_log_length, &logsize );         char* logmsg = new char[logsize];         glgetshaderinfolog( shader, logsize, null, logmsg );         std::cerr << logmsg << std::endl;         delete [] logmsg;          exit( exit_failure );     }      delete [] s.source;      glattachshader( program, shader );     }      /* link  , error check */     gllinkprogram(program);      glint  linked;     glgetprogramiv( program, gl_link_status, &linked );     if ( !linked ) {     std::cerr << "shader program failed link" << std::endl;     glint  logsize;     glgetprogramiv( program, gl_info_log_length, &logsize);     char* logmsg = new char[logsize];     glgetprograminfolog( program, logsize, null, logmsg );     std::cerr << logmsg << std::endl;     delete [] logmsg;      exit( exit_failure );     }      /* use program object */     gluseprogram(program);      return program; }  }  // close namespace angel block 

update

i changed code begin below , it's still not building , still build error.

#pragma comment(lib, "glew32.lib") #define glew_static 1 #include "angel.h" #include <gl\glew.h> 

update 150529

i can build freeglut glut examples glut appears correctly installed vc, when doubleclick 1 of example builds says freeglut.dll not installed on system. still same compilation error when trying build angel's example. why? doing wrong? should do?

enter image description here

1>------ build started: project: 6e test, configuration: release win32 ------ 1>  example1.cpp 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\angel.h(65): warning c4305: 'initializing' : truncation 'double' 'const glfloat' 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(698): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(699): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(700): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(721): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(723): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(726): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(742): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>  initshader.cpp 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\angel.h(65): warning c4305: 'initializing' : truncation 'double' 'const glfloat' 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(698): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(699): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(700): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(721): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(723): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(726): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>c:\users\student\downloads\6e_example1_vc10\6e test\code\mat.h(742): warning c4244: '=' : conversion 'double' 'glfloat', possible loss of data 1>..\code\initshader.cpp(13): warning c4996: 'fopen': function or variable may unsafe. consider using fopen_s instead. disable deprecation, use _crt_secure_no_warnings. see online details. 1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\stdio.h(218) : see declaration of 'fopen' 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewbindbuffer 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewvertexattribpointer 1>example1.obj : error lnk2001: unresolved external symbol __imp__glewinit@0 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewgenvertexarrays 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewuseprogram 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewbufferdata 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewbindvertexarray 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewgetattriblocation 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewgenbuffers 1>example1.obj : error lnk2001: unresolved external symbol __imp____glewenablevertexattribarray 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewcreateshader 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewgetshaderinfolog 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewlinkprogram 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewcompileshader 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewshadersource 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewgetprogramiv 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewgetshaderiv 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewgetprograminfolog 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewcreateprogram 1>initshader.obj : error lnk2001: unresolved external symbol __imp____glewattachshader 1>c:\users\student\downloads\6e_example1_vc10\6e test\release\6e test.exe : fatal error lnk1120: 20 unresolved externals ========== build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

update

i tried asking again , still won't work:

linker error glew , visual studio on windows 7

you're missing glew (the opengl extension wrangler library). can link in following pragma somewhere in source code:

#pragma comment(lib, "glew32.lib") 

or can modify linker flags in project settings. assumes have glew library installed. on system, installed @ following path:

c:\program files (x86)/microsoft visual studio 10.0/vc/lib/glew32.lib 

the path may different on system, , there other ways of linking glew if don't want install it.


Comments