Linker-Error in Dev-C++ 4.9.9.2



  • a) versuch doch einfach die Datei einzubinden, wenns nicht geht sagt dir das der Linker schon

    b) auch Windows kann eine Festplatte durchsuchen (libgdi32.o, Dev-Cpp verwendet g++)



  • Hi,

    dazu habe ich einen Beitrag in den FAQs erstellt 😉 Einfach mal reingucken, bevor du Fragen stellst: http://www.c-plusplus.net/forum/viewtopic-var-t-is-175552.html



  • Hallo,

    vielen vielen Dank, du hast mir sehr geholfen. Wieso hab ich nur dein FAQ-Thema übersehen, wo ich doch ewig nach einer Lösung gesucht habe? ^^

    Es klappt jetzt zwar, aber ich habe noch ein Problem. Im von mir ausgegebenen Text erscheinen Textzeilen, die dort wohl nicht hingehören (s. Bild)

    http://s9.photobucket.com/albums/a87/24maniac/fensterfehler.jpg

    Wär klasse, wenn da jemand noch schnell einen Tipp hätte 🙂



  • Ich hab doch keine Glaskugel... Du gibst einfach irgendwo nen Text aus.



  • mikey schrieb:

    Ich hab doch keine Glaskugel... Du gibst einfach irgendwo nen Text aus.

    Ich denke, es sollte offensichtlich sein, was mein Problem ist. Der markierte Code gehört da sicher nicht hin und ich hätte halt gerne gewusst, wie ich das wegbekomme. Ist das nun verständlich erklärt?



  • Itachi schrieb:

    Der markierte Code gehört da sicher nicht hin und ich hätte halt gerne gewusst, wie ich das wegbekomme.

    Warum versuchst du, 16 Zeichen auszugeben, wenn du nur 4 hast?



  • MFK schrieb:

    Itachi schrieb:

    Der markierte Code gehört da sicher nicht hin und ich hätte halt gerne gewusst, wie ich das wegbekomme.

    Warum versuchst du, 16 Zeichen auszugeben, wenn du nur 4 hast?

    Oh, da hab ich anscheinend vergessen, den Wert der Anzahl der Zeichen anzupassen, danke für den Hinweis. Jetzt funktioniert es.

    Nur leider spuckt mir der Compiler ständig (für mich) nicht reproduzierbare Fehlermeldungen aus. Auf einmal will er kein zweites Fenster mehr erzeugen.

    Bis jetzt habe ich folgenden Code:

    #include <windows.h>
    #include <conio.h>
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain (HINSTANCE hI, HINSTANCE hPrI, PSTR szCmdLine, int iCmdShow)
    {
        char szName[] = "Window Class";
        HBRUSH MyBrush = CreateSolidBrush(RGB(100,100,10));
        WNDCLASS wc;
    
        wc.style         = CS_HREDRAW | CS_VREDRAW;
        wc.lpfnWndProc   = WndProc;
        wc.cbClsExtra    = 0;
        wc.cbWndExtra    = 0;
        wc.hInstance     = hI;
        wc.hIcon         = LoadIcon (NULL, IDI_INFORMATION);
        wc.hCursor       = 0;
        wc.hbrBackground = MyBrush;
        wc.lpszMenuName  = NULL;
        wc.lpszClassName = szName;
    
        RegisterClass (&wc);
    
        HWND hwnd = CreateWindow (szName, "Mein Fenster", WS_OVERLAPPEDWINDOW,
                                 0, 0, 370, 130, NULL, NULL, hI, NULL);
        ShowWindow (hwnd, iCmdShow);
        UpdateWindow (hwnd);
    
        // Message handeln START
        MSG msg;
    
        while (GetMessage(&msg,NULL,0,0))
        {
              TranslateMessage (&msg);
              DispatchMessage (&msg);
        }
    
        return msg.wParam;
    
    }
        // Message handeln ENDE
    
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
            HDC hdc;
            PAINTSTRUCT ps;
            HWND hwndButton1, hwndButton2;
    
            switch (message)
            {
                   case WM_PAINT:
                        hdc = BeginPaint (hwnd, &ps);
                        SetTextColor (hdc, RGB(1, 1, 1));
                        TextOut (hdc, 10, 10, "Test" , 4);
                        EndPaint (hwnd, &ps);
            return 0;
    
            case WM_CREATE:     
                 hwndButton1 = CreateWindow ("button", "Hier klicken",
                                            WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                                            251, 10, 100, 20, hwnd, (HMENU)2,
                                            (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL;
    
                 hwndButton2 = CreateWindow ("button", "Nochmal klicken",
                                            WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
                                            251, 10, 100, 20, hwnd, (HMENU)2,
                                            (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE), NULL;
            return 0;
    
            case WM_DESTROY:
                 PostQuitMessage(0);
            return 0;
    }
    
    return DefWindowProc (hwnd, message, wParam, lParam);
    
    }
    

    Es kommt immer die Meldung "CreateWindowA undeclared" und "unterminated argument list invoking macro CreateWindowA in function LRESULT WndProc(HWND__*, UINT, WPARAM, LPARAM);"

    Daraus werde ich beim Besten Willen nicht schlau. Muss ich noch eine weitere Bibliothek einbinden?



  • Itachi schrieb:

    Nur leider spuckt mir der Compiler ständig (für mich) nicht reproduzierbare Fehlermeldungen aus.

    Reproduzierbar sind sie, immerhin hast du sie hier reproduziert ;). Vermutlich meinst du "unverständlich".

    Itachi schrieb:

    unterminated argument list invoking macro CreateWindowA
    ...
    Muss ich noch eine weitere Bibliothek einbinden?

    Nein, du musst die runden Klammern nachzählen. Du machst 4 auf, aber nur 3 zu.



  • Zusammengehörende Klammerpaare schnell und zuverlässig erkennen zu können ist nicht immer wirklich einfach... In Dev-C++ gibt's da nen super Feature, das dir zusammenghörende Klammerpaare hervorhebt: Werkzeuge->Editor Optionen->Klammerpaare hervorheben



  • @ MFK:

    Ich meinte das eigentlich so, dass ich sie in meinem Kopf nicht nachvollziehen kann; hab mich etwas unverständlich ausgedrückt, wie ich das sonst eigentlich nicht mache, sorry ^^

    @ mikey

    Die Funktion kannte ich tatsächlich noch nicht. Jetzt scheint wieder alles zu klappen. Danke an euch ^^


Anmelden zum Antworten