关于OpenGL程序的链接器错误(参考_WinMain@16)



编译OpenGL程序会产生以下链接器错误:

error LNK2019: unresolved external symbol _WinMain@16 referenced

显示功能
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();
}

窗口大小调整处理程序

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);
}

键盘输入处理程序

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;
   }
}

错误LNK2019: unresolved external symbol _WinMain@16 referenced表示您的程序缺少进程入口函数WinMain。有两种可能的原因:

可能性1

你的程序有一个入口函数main,但是你正在编译一个目标子系统Windows。详见https://stackoverflow.com/a/6882500/524368。实际上,你必须指定一个不同的启动函数。

/SUBSYSTEM:windows
/ENTRY:mainCRTStartup

/SUBSYSTEM:console

可能性2

你的代码缺少一个入口点函数。您至少需要一个函数mainWinMain,以及适当的链接器子系统和入口设置。如果没有提供这样的函数,您会得到这个错误。

最新更新