Linker Error bei Fenster-Erstellung



  • Hej,
    ich fange gerade an, die WINAPI zu lernen und teste mich an einem Fenster. Hier der Code, falls benötigt:

    #define STRICT
    
    #include <windows.h>
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    const char szAppName[] = "Ein eigenes Fenster";
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                       PSTR szCmdLine, int iCmdShow)
    {
       HWND       hWnd;
       MSG        msg;
       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,
                           "Titelleiste",
                           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_DESTROY:
          {
             PostQuitMessage(0);
             return 0;
          }
       }
       return DefWindowProc(hWnd, message, wParam, lParam);
    }
    

    Wenn ich mit meinem Compiler (Bloodshed Dev-C++ 4.9.9.2) das kompilieren will, meldet er nur

    [Linker error] undefined reference to `GetStockObject@4' 
    ld returned 1 exit status
    

    Was kann ich da tun?



  • mit gdi32.lib linken



  • Tschuldige, wenn ich mich etwas dämlich anstelle, etwa so?

    #include "C:/Programme/Microsoft SDKs/Windows/v6.0A/Lib/Gdi32.Lib"
    

    Ich weiß nicht so genau, wie man "linkt". Und diese Datei find ich auch nur in diesem Ordner.



  • #pragma comment(lib, "gdi32.lib") 👎



  • Und das ergibt wieder

    [Linker error] undefined reference to `GetStockObject@4'
    ld returned 1 exit status
    

    😞

    Ich hab jetzt auch herrausgefunden, dass ich libgdi32.a und nicht .lib benötige, die ist auch im Lib-Verzeichnis von Dev-Cpp, aber leider bleibt der Fehler.



  • Ad aCTa schrieb:

    Und das ergibt wieder

    [Linker error] undefined reference to `GetStockObject@4'
    ld returned 1 exit status
    

    😞

    Ich hab jetzt auch herrausgefunden, dass ich gdi32.a und nicht .lib benötige, die ist auch im Lib-Verzeichnis von Dev-Cpp, aber leider bleibt der Fehler.

    Projekt => Projekt Einstellungen => Linker Parameter (oder so)
    und da -lgdi32 oder gdi32.a eintragen



  • Ah, danke! Darauf wär' ich nie gekommen.


Anmelden zum Antworten