link error

Acriss

Gesperrt
hi allerseits
C++ ist und bleibt immer noch ein Feind von mir :D

Ich beschäftige mich gerade mit einer "einfachen" Windows Funktion usw (heißt das überhaupt so?)
und bin gerade bei den Fenstern.

Dev-C++ meldet mir bei folgendem Code einen Fehler, den ich nicht zu lösen weiß :(
[Linker error] undefined reference to `_Z14MessageHandlerP6HWND__jjl@16'

Code:
#include <windows.h>

//Anwendungsfenster erzeugen
HWND CreateMainWindow(HINSTANCE hInstance);

//Callback-Funktion zur Nachrichtenbehandlung
LRESULT CALLBACK MessageHandler(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

//globale variable für das Fenster-handle
HWND hWnd = 0;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    //fenster erzeugen und Handle speichern
    hWnd = CreateMainWindow(hInstance);
    
    //Wenn der Rückgabewert 0 ist, ist ein Fehler aufgetreten
    if (hWnd == 0)
    { 
        MessageBox(0, "Fenster konnte nicht erzeugt werden", "Fehler",MB_OK);
        return 0;
    }
    //Struktur, in der Informationen zur Nachricht gespeichert werden
    MSG msg;
    
    //Die Schleife läuft bis die nachricht WM_QUIT empfangen wird
    while(GetMessage(&msg,NULL,0,0))
    {
        //Nachricht an die callback-Funktion senden
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    //Rückgabewert and Windows
    return 0;
}
HWND CreateMainWindow(HINSTANCE hInstance)
{
    WNDCLASSEX wndClass= {
        sizeof(WNDCLASSEX), //Größe angeben
        CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW, //standardstile
        MessageHandler, //Callback-Funktion
        0, //Zusätzliche angaben
        0, //nicht benötigt
        hInstance, //Anwendungsinstanz
        LoadIcon(NULL, IDI_WINLOGO), //Windoslogo
        LoadCursor(NULL, IDC_ARROW), //Standard Cursor
        (HBRUSH)GetStockObject(WHITE_BRUSH),//WeißerPinsel
        NULL, //KeinMenü
        "WindowClass", //Name der Klasse
        LoadIcon(NULL, IDI_WINLOGO) //Windows-LOGO
    };
    RegisterClassEx(&wndClass);    
    return CreateWindowEx(
    NULL, //Ohne erweiterte Stile
    "Windowclass", //Klassenname
    "Ein einfaches Fenster", //Fenstertitel
    WS_OVERLAPPEDWINDOW | WS_VISIBLE, //Eigenschaften
    0, 0, //Anfangsposition (x,y)
    1000,100, //Größe
    NULL, //Handle des Elternfensters
    NULL, //Handle des Menüs
    hInstance, //Anwendungsinstanz
    NULL //nicht benötigt
    );
}

Please Help :)
 
Unabhängig vom Quellcode, wenn ich mir den Linker-error so anschaue würde ich mal nach meiner Dev-cpp Erfahrung sagen, da musst du irgend eine statische Bibliothek einbinden.
Aber dev ist eh Schrott, such dir lieber was, was weiterentwickelt wird. (z.B. Code::Blocks) ich habe mich auch erst ewig mit dev rumgeschlagen, aber die Fehler meldung "Permission dinied" beim kompilieren hat das fass zum überlaufen gebracht:D.
gruß Ryu1991
 
Unabhängig vom Quellcode, wenn ich mir den Linker-error so anschaue würde ich mal nach meiner Dev-cpp Erfahrung sagen, da musst du irgend eine statische Bibliothek einbinden.
Aber dev ist eh Schrott, such dir lieber was, was weiterentwickelt wird. (z.B. Code::Blocks) ich habe mich auch erst ewig mit dev rumgeschlagen, aber die Fehler meldung "Permission dinied" beim kompilieren hat das fass zum überlaufen gebracht:D.
gruß Ryu1991

Oh Gott, sry aber CodeBlocks hat schon Probleme beim einbinden von windows.h
Ich habe schon alles ausprobiert was geht, und bin von code::blocks zurück zu dev, wegen windows.h ;)
 
Zurück