Dev-C++ und CommmonControls... <commctrl.h>
-
hi leute
ich bin gerade voll happy, weil ich ein dev-spezifisches problem endlich lösen konnte.
um andere vor dieser situation (das vor dem happy-sein) zu ersparen:Problem:
[Linker error] undefined reference to 'InitCommonControlsEx@4' // trotz: #include <commctrl.h>
Die Funktionen der CommonControls <commctrl.h> werden nicht gefunden, obwohl die Header-Datei eingebunden wurde.
Lösung:
Zwei Schritte sind nötig:
**1.// _WIN32_IE definieren, bevor commctrl.h eingebunden wird #if defined __MINGW_H #define _WIN32_IE 0x0400 #endif #include <commctrl.h>
2.**
//Folgenden Parameter in die Linker-Einstellungen in den Projekt-Einstellungen: -lcomctl32
gefunden auf: http://www.foosyerdoos.fsnet.co.uk/MainFiles/DynaContainFiles/Code/CreateStatusBar.htm
(Hat übrigens auch einige schöne Beispiele für die Anwendung einfacher Windows, wie Buttons, Scrollbars, Statusbars ...)
-
Die Funktionen der CommonControls-Library werden nicht gefunden, obwohl die Header-Datei eingebunden wurde.
Warum auch?
-
hmm.. naja.. die funktion InitCommonControlsEx() ist in <commctrl.h> deklariert (zeile 2988 ;)), und sollte deshalb eigentlich ohne fehler vom compiler geschluckt werden...
-
Es beschwert sich aber der Linker und nicht der Compiler.
-
okee, aber bei <vector> oder <cmath> muss ich beim linker nichts einstellen..
willst du sagen, das problem ist völlig trivial, und verdient keine weiteren kommentare?
ich (noch-nicht-so-fortgeschrittener) finde es eben recht erstaunlich, dass man einen solchen "Aufwand" betreiben muss, um eine simple StatusBar zu erstellen..
-
Da du Dev-Cpp benutzt und dieser nunmal gcc nutzt, linkt g++ automatisch gegen die C++ Standardlib. Deswegen brauchst du auch keine weiteren Linkereinstellungen bei vector<> und co.