undefined reference: GetConsoleWindow



  • #include <stdio.h>
    #include <windows.h>
    #include <time.h>
    #include <winsock.h>
    #include <Wincon.h>
    #include <winuser.h>	
    
    /************************** MAIN *******************************/
    int main( void )
    {
    
    	ShowWindow( (HWND)GetConsoleWindow(), SW_HIDE );
    
    }
    

    Dass ist mein code, es ist nochviel mehr, aber dass ist dass, wass euch am wichtigsten ist.
    Der einzige -vom Compiler- gemeldete Fehler.
    Er findet GetConsoleWindows nicht 😮 😕 ;
    Ich habe in die cmd geschrieben:

    gcc -o server server.c -lwsock32
    

    und auch

    gcc -o server server.c -lwsock32 -lkernel32
    

    beides geht nicht.
    Bei msdn stehts, und so müssts funktionieren!?



  • Scheiß compiler?
    Ich habe jetzt aus lauter verzweiflung einfach mal in die wincon.h geschaut, wo dass ja auch steht:

    #if (_WIN32_WINNT >= 0x0500)
    BOOL WINAPI GetConsoleDisplayMode(LPDWORD);
    HWND WINAPI GetConsoleWindow(void);
    #endif
    

    Da stehts doch.... Was hat der fürn prob?



  • Erstens: Beschwert sich wirklich der Compiler oder der Linker?

    Zweitens: Hast du das Makro _WIN32_WINNT irgendwo definiert? Und wenn ja, auf welchen Wert?



  • 1. Keine ahnung
    2. Nein habe ich nicht.

    Wozu soll dass gut sein?



  • lippoliv schrieb:

    1. Keine ahnung

    Dann schau nach - bzw. gib die exakte Fehlermeldung des Compilers an.

    2. Nein habe ich nicht.

    Wozu soll dass gut sein?

    Wenn du genau hinsiehst, erkennst du, daß die Deklaration in einem #if-Block liegen - die bemerkt der Compiler nur, wenn _WIN32_WINNT größer/gleich 0x500 ist.



  • Ja und wann ist sie dass?
    Ist dass nicht Betriebssystemabhängig?
    Bei msdn steht "Client Requires Windows Vista, Windows XP, or Windows 2000 Professional. " Ich habe Vista.

    Der Link war eben falsch

    ./cce2aaaa.o:server.c:(.text+0x34): undefined reference to `GetConsoleWindow'
    ./cce2aaaa.o:server.c:(.text+0x38f): undefined reference to `GetConsoleWindow'
    ./cce2aaaa.o:server.c:(.text+0x3d8): undefined reference to `GetConsoleWindow'
    

    Das steht da



  • Remarks

    To compile an application that uses this function, define _WIN32_WINNT as 0x0500 or later. For more information, see Using the Windows Headers.

    Schonmal mit lesen versucht?

    //Edit
    Noch als Tipp

    #define



  • Habich noch nie gelernt... Was ist dass?

    Hm... Ok, habich nie bemerkt. Wozu brauche ich dass/Wie setze ich das?



  • lippoliv schrieb:

    Ja und wann ist sie dass?

    Wenn der Compiler sie auf einen entsprechenden Wert gesetzt hat - VS übergibt automatisch diese Konstanten mit den richtigen Werten, wenn du von Hand compilierst, mußt du dich selber darum kümmern.



  • #undef WINVER
    #define WINVER 0x0500
    #undef _WIN32_WINNT
    #define _WIN32_WINNT 0x0500
    

    So habe ich dass jetzt gemacht, dass

    ./ccYbcaaa.o:server.c:(.text+0x34): undefined reference to `GetConsoleWindow'
    ./ccYbcaaa.o:server.c:(.text+0x38f): undefined reference to `GetConsoleWindow'
    ./ccYbcaaa.o:server.c:(.text+0x3d8): undefined reference to `GetConsoleWindow'
    

    kommt dabei raus.
    Ich kann auch nicht

    _WIN32_WINNT = 0x0500;
    

    schreiben.



  • Hast du das define auch vor dem include von wincon.h gesetzt?

    Gruß mcr



  • Gut daran habe ich nciht gedacht.

    DANKE an alle. Es klappt.


Anmelden zum Antworten