undefined reference to InitCommonControls

Neonof

Mitglied
Hast du es mit "comctl32" (ohne .lib-Zusatz, ohne vollem Pfad) probiert? Eigentlich müsste die Bibliothek so gefunden werden (wenn man denn dem Internet glauben schenken kann).
Das war es... peinlich.:confused:

meine Kompilate waren immer sehr klein (~50KB), da VC Redistributable quasi alles auslagert
Ich würde gerne mal wissen, welche Einstellungen oder welche Version es dazu braucht. Ich hatte mir einfach schnell während einer Vorlesung die Community-Edition heruntergeladen und deren Kompilate waren grundsätzlich nicht kleiner als 150KB. Mit Pelles war noch nie eines größer als 50.

Falls du auf die "sicheren" _s-Funktionen ansprichst: Ja, damit hat man sich sehr in den Fuss geschossen. Allerdings ziehen sich diese "sichereren" Funktionen durch alle Compiler, nur war Microsoft so blöd*, mit errors um sich zu werfen, was viele vergraulte.
Ganz genau davon sprach ich. Zu jedem Error musste man sonst halt erst mal die entsprechenden Makros definieren, um die Errors zu deaktivieren. Dann ging es eigentlich. Dazu muss man sagen, dass Microsoft einem da eigentlich auch schon entgegen kam, in dem in der Warnung oder dem Error gleich schon auf die Möglichkeit hingewiesen wurde, mit welchem Makro man diese unterdrücken konnte.

Falls du Fensteranwendungen für alle Plattformen machen willst, kann ich Qt nur empfehlen. Es ist nicht das schönste und auch nicht das effizienteste Framework, aber es ist gut genug, und der QtCreator ist die einzige IDE, die zumindest ansatzweise an VS herankommt.
Es eröffnen sich mir gerade neue Welten O.O
Das kannte ich noch nicht. Vielen Dank!

Auf den ergoogleten Screenshots steht C++ und Java. Soweit ich mich erinnere, sollte jeder C++ Compiler aus versionsgeschichtlichen Gründen auch C kompilieren können. Aber heißt das, dass die Kompilate noch so hardwarenah bleiben?

Wenn Qt ein Framework ist, bedeutet das nicht, dass jeder erst einmal das Framework installiert haben muss, um damit erstellte Anwendungen nutzen zu können?
Ich schätze wenn ich erwarten will, dass ein Programm von sich aus auf jedem System verstanden wird, müsste es wohl alle möglichen Verwaltungsaufgaben selber übernehmen, wäre sehr komplex und ohnehin alles andere als klein...

Welche Konzepte nutzt man, um mit Qt Fensteranwendungen zu schreiben? Ich gehe mal davon aus, eine Dokumentation oder ähnliches wird beiliegen.
Ich schätze das wird sich für mich noch hinauszögern, da ich noch kein Geld dafür ausgeben werde. Doch das im Hinterkopf zu haben ist schon einmal sehr wertvoll. :)

Gruß,
Neonof
 

sheel

I love Asm
Soweit ich mich erinnere, sollte jeder C++ Compiler aus versionsgeschichtlichen Gründen auch C kompilieren können.
Nicht mehr. In den Anfangszeiten hat das gestimmt, aber inzwischen haben sich die Sprachen deutlich auseinanderentwickelt.
... "Oft" gehts, aber nicht immer. Und in (eher seltenen) Fällen gibts leider auch Code der zwar in C und C++ kompiliert, aber nicht das selbe macht.

Aber heißt das, dass die Kompilate noch so hardwarenah bleiben?
Ob man auf Windows C oder "C mit C++-Compiler" programmiert, macht keinen Riesenunterschied .... hardwarenah in dem SInn, dass es am nächstbesten yc auch läuft, ist beides nicht; da muss ein passender Crosscompiler und eine andere Sammlung von vorgefertigten Funktionen her (ein CreateWindow wird man schon mal nicht finden ... usw.)

Zu QT ... Zuerst einmal: Achtung das ist C++. Nicht C-das-auch-in C++-Compilern-läuft, sondern wirklich C++. Und eigentlich nicht mal das - Qt ist eines dieser Frameworks, die die Sprache selber erweitern, und vor dem eigentlichen C++-Compiler braucht man noch einen Zusatzcompiler von Qt, damit diese neuen Sachen übersetzt werden.

Wenn Qt ein Framework ist, bedeutet das nicht, dass jeder erst einmal das Framework installiert haben muss, um damit erstellte Anwendungen nutzen zu können?
Jein.
Qt gibts entweder unter der LGPL-Lizenz (gratis, aber ein paar Einschränkungen wie es verwendet werden kann) oder gegen Geld ... mit der Bezahlversion kann man jedenfalls alles in eine Programmdatei packen. Mit der LPGL-Version gibts zB. eine Anforderung ist, dass die Verwender die Möglichkeit haben, das mitgegebene QT in deinem Programm gegen eigenes Zeug auszutauschen (zB. neuere Versionen, solang sie sich nicht zu sehr geändert haben). Die übliche Art, das zu erreichen, ist, QT nicht in der Exedatei zu haben, sondern in eigenen DLL-Dateien mitzugeben (nicht der ganze Download vom Framework, nur ein paar einzelne Dateien). Der Benutzer könnte dann einfach die Dateien austauschen.
(Oder man stellt sein eigenes Programm auch unter die LGPL - jeder Verwender darf (zumindest auf Anfrage) den kompletten Source haben, ändern, weiterverbreiten, usw. ... dann wäre das Austauschproblem auch erledigt (mit der neuen QT-Version einfach das ganze Programm neu kompilieren) und man kann wieder alles in eine Datei stopfen)

Ich gehe mal davon aus, eine Dokumentation oder ähnliches wird beiliegen.
Ich schätze das wird sich für mich noch hinauszögern, da ich noch kein Geld dafür ausgeben werde.
Dokumentation gibts, ja http://doc.qt.io/ . Und wie gesagt muss man nicht unbedingt zahlen, solang man ein paar Bedingungen einhalten kann (Verkaufen des eigenen Programms mit LGPL-Qt dabei ist übrigens erlaubt)
 

cwriter

Erfahrenes Mitglied
Auf den ergoogleten Screenshots steht C++ und Java. Soweit ich mich erinnere, sollte jeder C++ Compiler aus versionsgeschichtlichen Gründen auch C kompilieren können. Aber heißt das, dass die Kompilate noch so hardwarenah bleiben?
Ok, hier gibt es zwei Punkte.
1):
Nicht mehr. In den Anfangszeiten hat das gestimmt, aber inzwischen haben sich die Sprachen deutlich auseinanderentwickelt.
... "Oft" gehts, aber nicht immer. Und in (eher seltenen) Fällen gibts leider auch Code der zwar in C und C++ kompiliert, aber nicht das selbe macht.
2): C für GUIs gibt es praktisch nicht mehr. Ja, die WinAPI ist noch da, und GTK+ist meines Wissens auch noch C, aber: KDE nutzt schon Qt, wxWidgets ist C++. GTK+ wird häufig über ein C++-Interface genutzt.
Zu Hardwarenah: Beide Sprachen laufen als Maschinencode. Qt nutzt virtual functions in extremen Ausmassen, ist daher nicht superschnell (aber du wirst kaum einen Unterschied zur WinAPI feststellen, wenn du keine total abgespaceten Dinge vorhast). Man zahlt schlicht die "Cross-Platform-Tax".
Reines C schreibt man auf Windows übrigens schon lange nicht mehr, es ist mehr ein "C auf C++-Basis": C Syntax und Verhalten, C++ Runtime.

Zu QT ... Zuerst einmal: Achtung das ist C++. Nicht C-das-auch-in C++-Compilern-läuft, sondern wirklich C++. Und eigentlich nicht mal das - Qt ist eines dieser Frameworks, die die Sprache selber erweitern, und vor dem eigentlichen C++-Compiler braucht man noch einen Zusatzcompiler von Qt, damit diese neuen Sachen übersetzt werden.
Qt kompiliert vollständig als C++. Es gibt den MOC (Meta Object Compiler), der Signale zu C++ kompiliert. Daher würde ich Qt am besten mit dem QtCreator nutzen, der macht das im Hintergrund. Andere IDEs gehen auch, aber oft muss man dann die Custom Build Steps selbst definieren, was mühsam werden kann.

Wenn Qt ein Framework ist, bedeutet das nicht, dass jeder erst einmal das Framework installiert haben muss, um damit erstellte Anwendungen nutzen zu können?
Was sheel sagt und:
Es sind 5-10 DLLs, je nach Bedarf. Unter Linux geht das mit apt / yum / dpkg problemlos, Windows erfordert das Mitliefern (sind ein paar MB).

Welche Konzepte nutzt man, um mit Qt Fensteranwendungen zu schreiben?
QtCreator hat einen Zusammenklick-Editor, der für die allermeisten Programme reicht. Ansonsten nutzt man C++-Features wie Vererbung und Qt's Signals & Slots, um Events (wie Button Click) zu behandeln.

Es ist C++, ja, aber GUIs machen in OO-Programmierung schlicht mehr Sinn.
Und halt, wie gesagt, keine Abhängigkeit von Windows.

Qt ist sogar nicht nur ein GUI-Framework, sondern hat eingebaute Unicode-Unterstützung, eigene Dateioperationen usw. Du musst dich also nicht mehr um Umlaute o.ä. sorgen.

Gruss
cwriter
 

Neonof

Mitglied
Hammer, ist das viel Stoff auf einmal!
Ich denke, bis hier her genügen mir die Infos erst einmal, bis ich das alles aufgearbeitet habe und mich ernsthaft mit Qt befasse.
Auch gehört das ja schon lange nicht mehr zum eigentlichen Thema.

Danke für die Nachhilfe. :D