-2

Compiling an OpenGL program gives the following linker error:

error LNK2019: unresolved external symbol _WinMain@16 referenced

Display function

void display(void)
{
   glClear (GL_COLOR_BUFFER_BIT);

   glPushMatrix();
   glTranslatef (-1.0, 0.0, 0.0);    
   glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);
   glTranslatef (1.0, 0.0, 0.0);

   glPushMatrix();
   glScalef (2.0, 0.4, 1.0);
   glutWireCube (1.0);
   glPopMatrix();

   glTranslatef (1.0, 0.0, 0.0);
   glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0);
   glTranslatef (1.0, 0.0, 0.0);

   glPushMatrix();
   glScalef (2.0, 0.4, 1.0);
   glutWireCube (1.0);

   glPopMatrix();
   glPopMatrix();
   glutSwapBuffers();
}

Window resize handler

void reshape (int w, int h)
{
   glViewport(0, 0, (GLsizei) w, (GLsizei) h);

   glMatrixMode(GL_PROJECTION);    
   glLoadIdentity();
   gluPerspective(65.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);

   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();

   glTranslatef (0.0, 0.0, -5.0);
}

Keyboard input handler

void keyboard (unsigned char key, int x, int y)
{
   switch (key) {
      case 's':   /*  s key rotates at shoulder  */
         shoulder = (shoulder + 5) % 360;
         glutPostRedisplay();
         break;

      case /*`*/'S':
         shoulder = (shoulder - 5) % 360;
         glutPostRedisplay();
         break;

      case /*`*/'e':  /*  e key rotates at elbow  */
         elbow = (elbow + 5) % 360;
         glutPostRedisplay();
         break;

      case /*`*/'E':
         elbow = (elbow - 5) % 360;
         glutPostRedisplay();
         break;

      default:
         break;
   }
}
datenwolf
  • 159,371
  • 13
  • 185
  • 298
  • I took the liberty of sanely reformatting your code and inferring the question you probably have from your question title. Next time please properly format your code, describe your problem and write a meaningful title. – datenwolf Jun 08 '14 at 13:03

1 Answers1

0

The error LNK2019: unresolved external symbol _WinMain@16 referenced means, that your program lacks the process entry function WinMain. There are two possible causes:

Possibility 1

Your program has a entry function main but you're compiling for a target subsystem Windows. See https://stackoverflow.com/a/6882500/524368 for details. Essentially you have to specify a different startup function.

Either

/SUBSYSTEM:windows
/ENTRY:mainCRTStartup

Or

/SUBSYSTEM:console

Possiblity 2

Your code lacks an entry point function. You need at least either a function main or WinMain, together with the appropriate linker subsystem and entry settings. Without such a function provided you get this error.

Community
  • 1
  • 1
datenwolf
  • 159,371
  • 13
  • 185
  • 298