编译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
你的代码缺少一个入口点函数。您至少需要一个函数main
或WinMain
,以及适当的链接器子系统和入口设置。如果没有提供这样的函数,您会得到这个错误。