Konsolen C++ - was nun ?
-
-
Julian__ schrieb:
ich kann dir nur zu qt sagen, dass du
1. dir die tutorials im assistant (ist als standalone-programm mit dem win-qt-sdk-setup dabei, oder unter "help" im creator) mal ansehen koenntest, imho sehr gut geeignet, um sich den umgang mit qt einigermassen anzueignen, c++-kenntnisse vorausgesetztund 2. dir qt auch selbst statisch kompilieren koenntest, sodass deine programme statisch gelinkt werden und dadurch nur den code enthalten, der auch benoetigt wird (die dynamischen libs enthalten ja meist noch ne ganze menge zeugs, das du in 1 programm gar nicht brauchst ...). dadurch werden die executables wesentlich groesser, das gesamtpaket aber wiederum kleiner.
neben qt waeren da btw. bspw. auch noch gtk, wxWidgets und einige mehr.
gtk und wxWidgets laufen auch unter windows und linux, zu mac os weiss ich nichts.mfg,
julianWie würde das mit dem statischen Linken denn dann funktionieren (Befehl) und gibt es eigentlich schon ein Programm für die QT DLLs sodass nicht gebrauchte Befehle rausfallen oder vielleicht ein QT Runtime, das etwas kleiner ist als die Haupt DLLs ?
-
1.) [... WinForms...]
Ich find Qt oder wxWidgets (siehe spaeter) sind da bessere Alternativen, da Plattformunabhaengig. Und zumindest bei wxWidgets bleibst du auch bei "reinem" C++, fuer WinForms musst du C++/CLI verwenden, ein kleines C++ "Dialekt", um auf die .NET Libs zuzugreifen.
2.) [...13 MB sind zuviel...] und das ist mir wirklich zuviel, wenn man es aus Sicht des kleineren Programmierers sieht.
Warum?
Habe ich bei irgendeinem davon etwas falsch verstanden oder gibt es noch eine andere Möglichkeit möglichst effektiv in der graphischen Welt zu programmieren (dabei aber bei C++ zu bleiben) ohne sich neue Skriptsprachen anzueignen ?
Es gibt zig andere Moeglichkeiten: http://www.c-plusplus.net/forum/viewtopic-var-t-is-81596.html . wxWidgets, gtkmm und MFC sind wohl die "wichtigsten" Alternativen, wobei MFC (IMO) sehr haesslich ist.
Bin bisher von QT am meisten begeistert, da wirklich alles funktioniert und mir die IDE einfach nur gefällt, außerdem wäre die Unabhängigkeit eine super Sache wenn da nicht diese "riesigen" DLLs wären, gibt es da nicht eine Problemlösung und dann noch ein gutes Buch (bin eher so der aus Büchern Lerner) und QT wäre perfekt.
Es gibt ein "Qt Programmieren" Buch. Sogar auf Deutsch. www.gidf.de , da findest du's.
PS.: Habe auch noch die IDE von Borland (Builder 6), kann man mit ihm auch noch alle heutigen Aufgabenbereiche decken oder ist Borland da bereits zu "veraltet"?
Kann man. Mit der VCL ist auch sehr angenehm GUIs zusammenklicken, iirc
Wie würde das mit dem statischen Linken denn dann funktionieren (Befehl) und gibt es eigentlich schon ein Programm für die QT DLLs sodass nicht gebrauchte Befehle rausfallen oder vielleicht ein QT Runtime, das etwas kleiner ist als die Haupt DLLs ?
Kommt auf deinen Compiler an. Vorher wirst du QT vermutlich selbst kompilieren muessen (wie das geht: RTFM
). Danach ists eine Einstellung bei deinem Linker (again: kommt drauf an welche IDE/welchen Compiler du verwendest).
Aus einer DLL Sachen "rausfallen lassen" geht nicht. Das geht nur wenn du statisch linkst.
-
zum statischen kompilieren von qt ist hier noch ne super anleitung: http://qtforum.de/forum/viewtopic.php?t=5343
dazu habe ich mal gelesen, wenn man zusaetzlich dazu noch upx zum packen der executables benutzt sollen die nochmal wesentlich kleiner werden und so eine ganz angenehme groesse bekommen, allerdings hab ichs mit upx noch nie selbst probiert ...
mfg,
julian
-
Julian__ schrieb:
zum statischen kompilieren von qt ist hier noch ne super anleitung: http://qtforum.de/forum/viewtopic.php?t=5343
dazu habe ich mal gelesen, wenn man zusaetzlich dazu noch upx zum packen der executables benutzt sollen die nochmal wesentlich kleiner werden und so eine ganz angenehme groesse bekommen, allerdings hab ichs mit upx noch nie selbst probiert ...
mfg,
julianHi julian, danke für den Link habe aber den Inhalt keinesfalls verstanden (gehört wirklich soviel Aufwand dazu QT statisch zu linken? Kenne es aus VS und Borland durch einen Hacken in Optionen, aber auf diesem Weg...
Die Dateien sind doch nach dem statischen compilieren genau so groß wie wenn ich die DLLs mit geben würde, nur das alles in einer .exe zusammengefasst wird, habe ich das richtig verstanden? Denn dann macht es ja kein Unterschied ob ich 4 Dateien oder 1 Datei mit insgesamt 14 MB habe. Wie kann den dann Google Earth kleiner als das sein wenn es ebenso mit QT programmiert wurde, da muss es doch noch eine kleinere DLL geben oder?
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also bei wx ist das mit dem statischen Linken so:
- die dynamischen DLLs sind auch zusammen > 10 MB
- verwendet man statisches Linken wird die exe ca. 3-5 MB groß, mit upx gepackt ca 1 MBWenn du Funktionen einer Bibliothek benutzt, dann sind diese ja nicht in deinem Code enthalten. Beim statischen Linken integriert der Linker die genutzten Funktionen mit in deine Exe.
Ich denke man sollte auch den VisualStudio-Kompiler nutzen da GCC und MinGW die exe doch sehr aufblähen ( -strip verwenden).
-
Leider darfst du die Qt-Libs nicht statisch zu deinem Programm linken - nur wenn du den Quellcode mitlieferst oder du eine gesonderte Linzenz kaufst. Sollte dich aber nicht weiter stoeren. Ich wuerde die DLLs sowieso extra zum Download anbieten und wirklich nur die reine Executable mit einem Hinweis auf die Qt-DLLs anbieten. Das hat den Vorteil, dass sich dein Nutzer nicht immer wieder die Qt-DLLs downloaden muss, wenn er diese bereits auf dem PC hat.
Qt hat aber natuerlich auch entscheidene Vorteile. Sie ist sehr maechtig und es gibt haufenweise Dokumentation/Tutorials und sogar deutschsprachige Buecher fuer Qt.wxWidget erzeugt noch akzeptable Executables (3MB etwa - laesst sich wie bereits erwaehnt noch mit UPX um ca. 50% der Groesse packen), ist portabel und enthaelt meiner Meinung nach alles, was man sich als GUI-Programmierier wuenscht. Ob es schoenes C++ ist und auch fuer Anfaenger geeignet ist, darueber laesst sich streiten. Mir persoenlich hat es nicht so zugesagt...
WinForms (.Net) ist absolut windowsabhaengig. Mehr kann ich darueber auch nicht wirklich sagen, weil ich kein Windows habe und es mich nicht wirklich naeher interessiert hat.
FLTK waere noch einen Blick wert. Die plattformunabhaengige Bibliothek ist besonders bekannt fuer die kleinen Executables, die man damit erstellen kann (ein einfaches Hello World mit Label und Button nur etwas ueber 120kb gross (statisch gelinkt - wird von der modifizierten LGPL von FLTK erlaubt), bei der experimentellen Version 2 von FLTK (leider noch Alpha/Beta) sogar nur noch 80kb...). Der Code ist sehr simpel gehalten, so dass auch Anfaenger keine grossen Probleme damit haben. Die Dokumentation ist sehr ausfuehrlich. Ein entscheidener Nachteil von FLTK ist natuerlich, dass der Funktionsumfang nicht so gross ist wie bei Qt, wxWidget und andere. Und ausser der Dokumentation (die aber sehr ausfuehrlich und lobenswert ist) gibt es keinerlei Tutorials, geschweige denn ganze Buecher.
Fazit: Alle Bibliotheken haben ihre Vor- und Nachteile - es gibt keine "perfekte" Bibliothek (egal was jetzt andere noch behaupten und ihre Lib als "perfekt" sehen). Waehle am besten die, die deinen Anspruechen am ehesten nachkommt und fixiere dich nicht so sehr auf eine einzelne Lib. Probier am besten mal alle nacheinander durch und bild dir deine eigene Meinung.
Gruss
Cartman
-
Schattenfang schrieb:
Julian__ schrieb:
zum statischen kompilieren von qt ist hier noch ne super anleitung: http://qtforum.de/forum/viewtopic.php?t=5343
dazu habe ich mal gelesen, wenn man zusaetzlich dazu noch upx zum packen der executables benutzt sollen die nochmal wesentlich kleiner werden und so eine ganz angenehme groesse bekommen, allerdings hab ichs mit upx noch nie selbst probiert ...
mfg,
julianHi julian, danke für den Link habe aber den Inhalt keinesfalls verstanden (gehört wirklich soviel Aufwand dazu QT statisch zu linken? Kenne es aus VS und Borland durch einen Hacken in Optionen, aber auf diesem Weg...
Die Dateien sind doch nach dem statischen compilieren genau so groß wie wenn ich die DLLs mit geben würde, nur das alles in einer .exe zusammengefasst wird, habe ich das richtig verstanden? Denn dann macht es ja kein Unterschied ob ich 4 Dateien oder 1 Datei mit insgesamt 14 MB habe. Wie kann den dann Google Earth kleiner als das sein wenn es ebenso mit QT programmiert wurde, da muss es doch noch eine kleinere DLL geben oder?
auch wenn Softwaremaker das eigentlich schon geschrieben hat, nochmal ums klarzumachen:
- wenn du dein programm gegen dynamische libs linkst, dann kommen immer die ganzen dll-files mit allen enthaltenen funktionen mit - unabhaengig davon, ob du diese funktionen auch alle in deinem programm benutzt.- beim statischen linken werden _nur_ die funktionen in dein executable gepackt, die in deinem code auch benutzt werden. daher faellt so meistens eine ganze menge weg, wodurch natuerlich die groesse auch schrumpft.
zum kompilieren der statischen qt-libs:
- wenn das im visual studio mit nem haken gemacht werden kann, sind wahrscheinlich die entspr. statischen libs schon dabei und der linker wird nur umgestellt.- im fall von qt musst du aber die statischen libs erst einmal selbst erstellen, was eben quasi einen einmaligen mehraufwand bedeutet.
das ist uebrigens wirklich keine grosse sache, code laden, konfigurieren, kompilieren, ggf. umgebungsvariablen setzen ...// edit: Eric Cartman hat uebrigens auch recht, man sollte sich einfach alle in frage kommenden frameworks mal angucken und sehen was einem am besten gefaellt.
in meinem fall war das qt, aber das sollte niemanden beeinflussen.
zudem solltest du dich hinsichtl. der lizenzen ggf. mal auf qtsoftware.com umsehen.
nicht in jedem fall darf dein programm closed source sein, wenn du die open source version von qt benutzt.mfg,
julian
-
Habe mich nun auch für QT entschieden (empfand den Code von wxwidgets ziemlich unverständlich gegen QT z.B.). Die DLLs mitzuliefern ist nun auch nicht so das große Problem (mit Rar (Stufe 9) gepackt kommt man auf überschaubare 4,3 MB für alle Grund-DLLs). Nur noch was an die Linux User unter euch, wie funktioniert es da mit QT, unter Windows füge ich die DLLs in WINDOWS/system32 ein aber wo unter Linux?
Gibt es eigentlich schon eine Art InstallShield mit Qt Unterstützung sprich ich liefere ihm mein Programm, und kreuze dann an welche DLLs dafür benötigt werden. Der Zielcomputer läd sich das Setup herunter, das Programm wird installiert und der Installer prüft ob die DLLs im System-Ordner vorhanden sind, wenn nicht werden diese aus dem Internet geladen (das nur als "Perfekte-Idee") bzw. womit erstelle ich möglichst einfach "gut" aussehende InstallShields um das Programm + die QT Libs zu installieren?
Und mit welchen Tutorials fange ich am besten an, habe bereits das AdressBook Tutorial aus der Doku von Qt gefunden, doch dieses läuft noch komplett ohne die Verwendung von QT Creator (meine Meinung nach eine 1A-IDE). Gibt es dafür auch schon Tutorials oder wird diese IDE allgemein nicht zur QT-Programmierung verwendet oder bestitzt noch Schwachstellen die ich bisher nicht kenne?
Edit: Habe bereits einen kleinen eigenen Webbrowser geschrieben und mit ihm komme ich auf eine Größe von 33,4MB (komprimiert 8,9MB) geht das noch kleiner?