Undefined reference to `WndProc(HWND__*, unsigned int, unsigned int, long)@16



  • Hi Leute,
    Ich hoffe Ihr könnt mir helfen. Ich mache gerade das WinApi Tutorial von http://www.win-api.de/. Als IDE nutze ich Code::Blocks und als Compiler MinGW bzw. g++. Bei folgendem Code...

    #define STRICT
    
    #include "windows.h"
    
    const char  szWitz[]    = "\"Ich steh' schwer auf Umweltschutz\", sagt Peter.\n"
                              "\"Ich werfe zum Beispiel alte U-Bahn-Fahrscheine nie weg,\n"
                              "sondern benutze sie mehrmals.\"";
    
    const char  szAppName[] = "WinApi Tutorial";
    
    int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
    int iMsgReslult = MessageBox(NULL, szWitz, "Trololololo", MB_ICONINFORMATION | MB_OKCANCEL);
    
    if(iMsgReslult == IDOK)
      {
      MessageBox(NULL, "Na dann... :-D", "Sie haben \"OK\" gedrückt.", MB_OK);
      }
    else if(iMsgReslult == IDCANCEL)
      {
      MessageBox(NULL, "Mögen Sie den Witz etwa nicht?", "Sie haben \"Abbrechen\" gedrückt.", MB_OK);
      }
    else
      {
      MessageBox(NULL, "Ungültiger Wert von iMsgResult: " + iMsgReslult, "Error", MB_OK);
      return -1;
      }
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    HWND hWnd;
    MSG msg;
    
    WNDCLASS wcWnd;
    
    wcWnd.style = CS_NOCLOSE | CS_HREDRAW | CS_VREDRAW;
    wcWnd.lpfnWndProc = WndProc;
    
    wcWnd.cbClsExtra = 0;
    wcWnd.cbWndExtra = 0;
    
    wcWnd.hInstance = hInstance;
    wcWnd.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wcWnd.hCursor = LoadCursor(NULL, IDC_IBEAM);
    wcWnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    
    wcWnd.lpszClassName = szAppName;
    wcWnd.lpszMenuName = NULL;
    
    return 0;
    }
    

    ...erhalte ich den Fehler:

    obj\Debug\main.o||In function `WinMain@16':|
    H:\BB08\WinApiTut\main.cpp|37|undefined reference to `WndProc(HWND__*, unsigned int, unsigned int, long)@16'|
    ||=== Build finished: 1 errors, 0 warnings (0 minutes, 2 seconds) ===|
    

    Ich habe keine Adminrechte, da ich mich an einem "öffentlichem" Rechner befinde. Könnte es daran liegen?
    Hier der/die/das Build log:

    -------------- Build: Debug in WinApiTut (compiler: GNU GCC Compiler)---------------
    
    mingw32-g++.exe  -o bin\Debug\WinApiTut.exe obj\Debug\main.o   -mwindows  
    obj\Debug\main.o: In function `WinMain@16':
    H:/BB08/WinApiTut/main.cpp:37: undefined reference to `WndProc(HWND__*, unsigned int, unsigned int, long)@16'
    collect2.exe: error: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 2 seconds)
    1 errors, 0 warnings (0 minutes, 2 seconds)
    

    MfG
    DragonRaider


  • Mod

    Du hast eine WndProc deklariert aber keine Funktion definiert!

    In anderen Worten: Zeig mir den Code Deiner WndProc! Das kannst Du nicht, denn Dein Code enthält keine.



  • Hi,
    Tut mir leid, war ein dummer Fehler 😃 . Ich bins gewohnt(gewöhnt?), Funktionen bei der deklaration zu definieren(Macht das so Sinn? Bin mir gerade nicht sicher, wie rum das noch mal war :p ) und nicht erst nen Prototyp zu deklarieren(?) und dann, erst nach der Main-Funktion, zu definieren(?).
    MfG
    DragonRaider

    PS.: Ich klinge wahrscheinlich gerade wie ein blutiger Anfänger 😉



  • DragonRaider schrieb:

    Ich bins gewohnt(gewöhnt?), Funktionen bei der deklaration zu definieren(Macht das so Sinn? Bin mir gerade nicht sicher, wie rum das noch mal war :p ) und nicht erst nen Prototyp zu deklarieren(?) und dann, erst nach der Main-Funktion, zu definieren(?).

    Wo ist das Problem, das kannst du doch hier genauso machen.



  • Hi,

    Wo ist das Problem, das kannst du doch hier genauso machen.

    Ja, schon, aber in dem Tutorial, das ich gerade mache, war es halt so gemacht, was mich so verwirrt hatte 😉 . Auch wenn mir dafür gerade kein Grund einfällt 😃

    Hiermit ist der Beitrag gelöst - CLOSED

    Danke an Alle 🙂

    MfG
    DragonRaider


Anmelden zum Antworten