簡體   English   中英

函數“int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ) 中引用的錯誤 LNK2019 未解析的外部符號 _WinMain@16

[英]Error LNK2019 unresolved external symbol _WinMain@16 referenced in function “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ)

這是我的腳本我不知道解決這個錯誤請幫助我非常感謝

float angle = 15;
float x, y, z;               // for polygon rotate 

void display()
{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); // clear screen and depth buffer
    glLoadIdentity();

    glPushMatrix();

    glColor3f(1.0, 0.0, 0.0);

    glBegin(GL_POLYGON);


    glVertex2f(160.0, 360.0);
    glVertex2f(300.0, 360.0);
    glVertex2f(160.0, 480.0);
    glVertex2f(300.0, 480.0);

    glPushMatrix();

    glColor3f(0.0, 0.0, 0.0);
    glVertex2f(580.0, 200.0);
    glVertex2f(640.0, 200.0);
    glVertex2f(580.0, 480.0);
    glVertex2f(640.0, 480.0);

    glRotatef(angle, -1.0f, 0.0, 0.0);

    angle += 15.0f;






    glEnd();




    glutSwapBuffers(); // dounle buffering

}
LRESULT CALLBACK MainWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_LBUTTONDOWN:
    {



    }break;

    case WM_DESTROY: {


        PostQuitMessage(0);

    }break;


    default:break;
    }
    return 0;
}



int main(int argc, char** argv)
{
    glutInit(&argc, argv); // Initialize GLUT

    glutInitDisplayMode(GLUT_DOUBLE);// Set up some memory buffers for our display


    glutInitWindowSize(640, 400);
    glutInitWindowPosition(100, 20);
    glutCreateWindow("My GLUT GAME");
    glutDisplayFunc(display);
    //glutKeyboardFunc();


    glutMainLoop();
    return 0;
}

您已將項目設置為構建為 Windows 應用程序,而不是命令行應用程序。 int main()更改為:

int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR pCmdLine, int nCmdShow)

https://msdn.microsoft.com/en-us/library/windows/desktop/ms633559%28v=vs.85%29.aspx

或者,將您的項目屬性更改為命令行應用程序。

我必須將應用程序作為輸出類型為 .exe 的可執行項目關鍵更改是將鏈接器 -> 系統 -> 子系統更改為控制台

在此處輸入圖片說明

作為解決方法,您可以添加調用main WinMain函數:

#ifdef _WIN32
int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
    return main(__argc, __argv);
}
#endif

對我來說,這有幫助。

轉到properties->Linker -> System -> Sub-system並選擇“未設置”或“Windows”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM