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.