Visual Stuido 2013 - API XYZ ist nicht definiert



  • Ich benutze Visual Studio 2013 und erhalte bei der Verwendung von:

    InitCommonControlEx();
    

    immer folgenden Compiler Fehler:

    IntelliSense: 
            Der Bezeichner ""InitCommonControlEx"" ist nicht definiert.
    

    Laut MSDN konnte ich entnehmen, dass hierfür commctrl.h und comctrl32.lib benötigt werden. Unter Projektmappe -> Externe Abhängigkeiten ist commctrl.rh - jedoch nicht commctrl.h vorhanden.
    Da ich nicht weiss, wo ich sehen kann, ob auch comtrl32.lib vorhanden ist, habe ich im Sourcecode ganz am Anfang folgende Zeile eingefügt:

    #pragma comment( lib, "comctl32.lib" )
    

    Jedoch bekomme ich das ganze nach wie vor nicht kompiliert.
    Frage, wie ist hier und generell in solchen Fällen vorzugehen? Wie bzw. woher weiss ich, welche .h / .lib Dateien ich ggfl. hinzufügen muss - ohne jedesmal erst die MSDN Webseiten zu durchforsten müssen. Vielen Dank im voraus!



  • Intellisense ist nicht wichtig. Der macht nur Autovervollständigung und ist öfters mal verwirrt, hat aber nichts zu sagen, wenn es darum geht, ob ein Programm korrekt ist. Kompiliere es und nimm den ersten Fehler des Compilers und ignoriere Intellisense-fehler.

    Allgemeines Vorgehen wenn der Compiler sagt "InitCommonControlEx Bezeichner nicht gefunden": Nach InitCommonControlEx suchen, Commctrl.h finden, #include <Commctrl.h> schreiben. Da kommst du nicht dran vorbei, aber so viele Header gibt es auch nicht bzw. #include <Windows.h> hat schon die meisten drin.

    Nachdem alles kompiliert kriegst du vielleicht einen Linkerfehler, der sagt, dass Symbol __impl16_InitCommonControlEx_@34u§"%4352 nicht gefunden wurde, dann musst du den Namen da rausfummeln und comctl32.lib dazulinken.

    Das Spiel macht man so 3-10 Mal je nach Umfang und dann funktioniert alles. Irgendwann kennt man die Funktionen und zugehörige Header und Libs schon fast auswendig.

    Compiler- und Linkerfehler kriegt man ganz gut auseinander gehalten (Compilerfehler starten mit C und Linkerfehler mit L oder so) und dann weiß man genau, ob es sich um ein Headerproblem oder Lib-Problem handelt.



  • nwp3 schrieb:

    Das Spiel macht man so 3-10 Mal je nach Umfang und dann funktioniert alles.

    Oder man liest einfach die zugehörige Doku ...


Log in to reply