2 Fehler beim Erstellen der exe



  • Hallo

    Ich lerne seit ein paar Tagen WinAPI und arbeite gerade ein Beispiel zur Ausgabe im Anwendungsbereich durch. Bei kompilieren kommen weder Fehler noch Warnungen (Visual C++ 2006), aber wenn ich die exe erstellen will kommen folgende Fehler:

    LIBCD.lib(crt0.obj) : error LNK2001: Nichtaufgeloestes externes Symbol _main
    Debug/uebung1.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    Quellcode:

    #define STRICT

    #include <windows.h>

    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

    const char szAppName[] = "Textausgabe im Anwendungsbereich";

    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR szCmdLine, int iCmdShow)
    {
    MSG msg;
    HWND hWnd;
    WNDCLASS wc;

    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    wc.lpszClassName = szAppName;
    wc.lpszMenuName = NULL;

    RegisterClass(&wc);

    hWnd = CreateWindow( szAppName,
    szAppName,
    WS_OVERLAPPEDWINDOW,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    CW_USEDEFAULT,
    NULL,
    NULL,
    hInstance,
    NULL);

    ShowWindow(hWnd, iCmdShow);
    UpdateWindow(hWnd);

    while (GetMessage(&msg, NULL, 0, 0))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    return msg.wParam;
    }

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    switch (message)
    {
    case WM_PAINT:
    {
    PAINTSTRUCT ps;
    HDC hDC;

    const char szText[] = "Hallo, dies ist der Text.";

    hDC = BeginPaint(hWnd, &ps);
    {
    TextOut(hDC, 50, 50, szText, sizeof(szText) - 1);
    }
    EndPaint(hWnd, &ps);
    return 0;
    }
    case WM_DESTROY:
    {
    PostQuitMessage(0);
    return 0;
    }
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
    }

    Hoffentlich weis einer von euch, wie ich die Fehler beheben kann.

    MfG
    Eddi



  • Du musst ein Fenster Projekt erstellen und kein Konsolenprojekt. Bzw in den Projekteinstellungen von Konsole auf Fenster umstellen.



  • Danke es funktioniert. Nur verstehe ich nicht, wo der UNterschied zwischen einer Konsolenanwendung und einer normalen Win32 Anwenung liegt. Manches geht nur dort und manches nur dort...naja werd mal googeln.



  • Eddi0406 schrieb:

    Danke es funktioniert. Nur verstehe ich nicht, wo der UNterschied zwischen einer Konsolenanwendung und einer normalen Win32 Anwenung liegt.

    1. Der Einstiegspunkt heisst anders
    2. Eine Consolen-Anwendung hat eine *Console* eine Windows-Anwendung nicht



  • Eddi0406 schrieb:

    Danke es funktioniert. Nur verstehe ich nicht, wo der UNterschied zwischen einer Konsolenanwendung und einer normalen Win32 Anwenung liegt.

    Nun, Win32 Anwendungen sind es ja erstmal beide. Die Unterschiede sind eher auf Benutzerebene zu suchen. Ein- und Ausgaben erfolgen auf der Konsole viel direkter. In einer Fensteranwendung geschieht das zB indirekter über Dialoge und Steuerelemente.


Anmelden zum Antworten