DevCpp findet Funktionen nicht
-
Ich hab wollte mir eine Toolbar mit der WinAPI basteln und hab den entsprechenden Header <commctrl.h> eingebunden. Dann habe ich den Beispiel-Code von Microsoft größtenteils übernommen und versucht das Programm zu kompileren (mit DevCPP 5). Der sagt aber:
gui.cpp: In member function `HWND__* Win32Toolbar::GUITBCreateToolbar(HWND__*, HINSTANCE__*, long unsigned int, unsigned int, int, int, int, int)': gui.cpp:144: `INITCOMMONCONTROLSEX' undeclared (first use this function) gui.cpp:144: (Each undeclared identifier is reported only once for each function it appears in.) gui.cpp:144: parse error before `;' token gui.cpp:146: `icex' undeclared (first use this function) gui.cpp:148: `InitCommonControlsEx' undeclared (first use this function) make.exe: *** [gui.o] Error 1
Sprich ihm sind die Funktionen nicht bekannt. Ich habe aber nachgesehen alle angeblich fehlenden Deklarationen stehen in der Header-Datei.
Ich habe mir tagelang darüber den Kopf zerbrochen, was läuft hier schief?
Danke schonmal,
MephistoP.S.: Ich weiß net, ob ich in dem Forum richtig bin, also ob es wirklich am Compiler liegt
-
Doch es lag am Compiler.
Nach eingehendem Studium der commctrl.h und preprocessor-dump lesens, hab ich den Fehler gefunden. Einfach _WIN32_IE setzen. Bei g++ zum Beispiel so:
-D_WIN32_IE=0x0600
Nur dann wird InitCommonControlsEx mitcompiliert.
Allerdings müsste diese Library dann doch ohne diese Option gar nicht richtig kompilierbar sein. Wieso schreibt Microsoft das denn nicht ins MSDN?
Naja, egal.Doch jetzt hat sich ein neues Problem ergeben , der Linker meint jetzt nämlich:
gui.o(.text+0x4a4):gui.cpp: undefined reference to `InitCommonControlsEx@4' C:/Dev-Cpp/lib/libmingw32.a(main.o)(.text+0x7f):main.c: undefined reference to `WinMain@16'
Is aber quatsch mit soße, denn ich habe WinMain eingefügt und die ComCtl32.lib is auch mit dabei genauso wie eine ausreichend neue Version der comctl32.dll. Liegt das jetzt daran, dass ich commctl zum compilieren "gezwungen" habe oder wie oder was?
MfG
Mephisto