![](/img/trans.png)
[英]Another error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
[英]Using OpenGL in Visual Studio 2010 - error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
我正在Visual Studio中編譯此OpenGL程序。 閱讀大量文章后,我已經正確設置了它。 我已將正確的庫添加到鏈接器的其他依賴項。 但是我收到此錯誤:
錯誤LNK2019: 函數_ _tmainCRTStartup中引用了無法解析的外部符號WinMain @ 16
我正在編譯的代碼是:
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glLoadIdentity (); /* clear the matrix */
/* viewing transformation */
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glScalef (1.0, 2.0, 1.0); /* modeling transformation */
glutWireCube (1.0);
glFlush ();
}
void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glFrustum (-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
glMatrixMode (GL_MODELVIEW);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
Windows中有兩種可執行文件:
唯一的區別是控制台可執行文件會自動打開控制台窗口,而C / C ++ CRT運行時會將標准的stdout / stdin / stderr句柄關聯到該窗口。 否則,這兩種可執行文件類型之間沒有區別-兩者都可以創建新的Windows,繪制事物,使用OpenGL等。
在Visual Studio中,如果您創建控制台應用程序-那么它期望您的入口點被稱為“主”。 但是對於GUI應用程序,它希望入口點函數稱為“ WinMain”。 因此,如果您不想在應用程序啟動時看到控制台窗口,則有兩個選擇:
使用第二個選項意味着可以使用GLUT,將入口點稱為“ main”,並且在啟動時沒有打開控制台窗口。
您可能正在使用一些非標准的Microsoft擴展,它們不希望您定義main
,而是WinMain
。
嘗試將main定義為:
int _tmain(int argc, _TCHAR* argv[])
要么
int WinMain(int argc, _TCHAR* argv[])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.