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.


Anmelden zum Antworten