PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Plattformüberfreifende Programmierung in C++?


janjan
2005-02-15, 13:39:19
Hi,

ich bin kurz davor mal wieder was größeres zu programmieren und nachdem ich was gefunden habe was mich interessiert stellt sich jetzt die Frage nach den Werkzeugen. Ein Problem ist z.B. das ich gerne plattformübergreifend programmieren würde. z.Z. benutze ich Windows, aber für die Zukunft stehen Linux und Mac Os X zur Diskussion.

Zum Programm selbst:
Es soll unter anderem mit Volumendatensätzen gearbeitet werden, dass heißt es soll eine ganze Menge dargestellt werden. Im ersten Schritt alles 2D, aber in Zukunft sicherlich 3D mit OpenGL. Das Interface wird vermutlich rel. kompliziert mit einer Menge von Custom Controls.
Da mit großen Datenmengen gearbeitet wird, muss das ganze sehr performant sein.

Ich bin mittlerweile soweit, dass ich Java für meine Zwecke auschließe und eher auf der C Schiene bleiben möchte. Wenn ich jetzt nur für Windows programmiere muss ich mich zwischen c++ und c# entscheiden, wenn ich plattformübergreifend programmiere wird es dann ja eher c oder C++ sein.

Ich hab mich schon ein bisschen umgelesen, aber mir fehlt irgendwie eine gute Einführung in das Thema. Hat einer von euch eine gute Übersichtsseite wo verschiedene Lösungen miteinander verglichen werden, bzw. hat einer von euch Erfahrungen auf diesem Gebiet?

schonmal danke im vorraus

clm[k1]
2005-02-15, 14:03:47
Du kannst auch C# nehmen und auf das mono-framework setzen!
In der aktuellen IX ist dazu ein artikel drin.

Du kannst aber natürlich auch C++ nehmen. Dann würde sich GTk oder QT für die GUI anbieten.

Zu GTk sollte es auf der offiziellen homepage (http://www.gtk.org) ein gute Doku geben.


just my 2 cent
clm[k1]

del_4901
2005-02-15, 17:36:38
Wenn es wirkl. Plattformübergreifend laufen sollte, dann Bau dir eine Schnittstelle und verwende nach dieser Schnittstelle nur Libs und Klassen die mit allen BSs funzen. Auf diese Schnitttstelle kannst du dann deine Graphische Ausgabe / Eingabe etc. aufsetzen. und compelliern kannst du das mit entsprechenden Präprozessordirektiven für jedes System. Man kann natürlich sich den meißten Dreck auch selbst programmieren, ohne BSs Funktionen zu verwenden ... aber dann könnte es ein Full-Time-Job werden.

MadMan2k
2005-02-15, 18:08:19
oder gleich http://www.wxwindows.org/ nehmen ;)

Trap
2005-02-15, 19:14:13
OpenGL ist plattformübergreifend.

Du hast recht ausführlich beschrieben was du weißt, aber nur sehr ungenau was du brauchst. Was brauchst du? Dann kann man dir sagen welche Möglichkeiten es gibt.

Coda
2005-02-15, 21:57:35
Ich würde auch wxWidgets empfehlen :)

janjan
2005-02-15, 22:20:50
Danke schonmal für die Antworten :)

@Trap
Das Programm wird hauptsächlich mit Volumendatensätzen zu tun haben. So zwischen 256^3 und 512*512*256 in 8 oder 16 bit Auflösung (Also schon ne ganze Menge Speicher). Im ersten Schritt ist geplant mehrere dieser Datensätze in 2D darzustellen. D.h. ich lade einen Datensatz und stelle den dann in 3 Ansichten dar, jeweils eine für jede Raumachse. In den Dingern soll man dann rumscrollen können, Dinge markieren usw.
Wenn das Programm nur aus einfachen Knöpfen usw. bestehen würde hätte ich glaube ich nicht so das Problem, aber diese grafischen Custom controls erscheinen mir da schon etwas schwerer.
(Im zweiten Schritt soll es dann irgendwann mal ein OpenGl basierter Volumenrenderer werden, aber da liegt noch in weiter Ferne ;) )

@die Leute die Ahnung von wxWidgets haben:
Wie schwer ist es eurer Meinung nach solch ein Control zu erzeugen? Schwerer als wenn ich das in MFC mache?

del_4901
2005-02-16, 00:12:50
Danke schonmal für die Antworten :)

@Trap
Das Programm wird hauptsächlich mit Volumendatensätzen zu tun haben. So zwischen 256^3 und 512*512*256 in 8 oder 16 bit Auflösung (Also schon ne ganze Menge Speicher). Im ersten Schritt ist geplant mehrere dieser Datensätze in 2D darzustellen. D.h. ich lade einen Datensatz und stelle den dann in 3 Ansichten dar, jeweils eine für jede Raumachse. In den Dingern soll man dann rumscrollen können, Dinge markieren usw.
Wenn das Programm nur aus einfachen Knöpfen usw. bestehen würde hätte ich glaube ich nicht so das Problem, aber diese grafischen Custom controls erscheinen mir da schon etwas schwerer.
(Im zweiten Schritt soll es dann irgendwann mal ein OpenGl basierter Volumenrenderer werden, aber da liegt noch in weiter Ferne ;) )

@die Leute die Ahnung von wxWidgets haben:
Wie schwer ist es eurer Meinung nach solch ein Control zu erzeugen? Schwerer als wenn ich das in MFC mache?

Wenn du irgendwann mal auf OGL umsteigen willst, dann lege ich dir ans Herz eine klare Schnittstelle zu schaffen . Das macht sogar Meister Carmack (siehe Q1 / Q2 Quellcode) dann hast du später weniger probleme beim portieren. Mit C++ ist das sogar nicht ganz so schwierig wie Q1 und Q2 mit C.

minos5000
2005-02-16, 11:05:48
Als plattformunabhängige Umgebung gäbs auch noch Qt von Trolltech.

Ich bin selber grad am überlegen, ob ich mich für wxWidgets oder Qt entscheiden soll. Hat jmd nen Tipp für mich??
Der Vorteil von Qt wäre, daß man alle Entwicklungswerkzeuge umsonst kriegt während es für wxWidgets AFAIK nur kommerzielle GUI Builder gibt.


so long

clm[k1]
2005-02-16, 11:52:29
Als plattformunabhängige Umgebung gäbs auch noch Qt von Trolltech.

Ich bin selber grad am überlegen, ob ich mich für wxWidgets oder Qt entscheiden soll. Hat jmd nen Tipp für mich??
Der Vorteil von Qt wäre, daß man alle Entwicklungswerkzeuge umsonst kriegt während es für wxWidgets AFAIK nur kommerzielle GUI Builder gibt.


so long

Ob QT für dich in frage kommt, hängt zum einen davon ab, ob du dein Programm kommerziell vermarkten willst, oder ein freies Programm schreibst.

Denn wenn du QT für kommerzielle software einsetzen willst, dann werden lizenzgebühren an trolltech fällig. und dann musst du halt entscheiden ob du bereit bist dafür geld auszugeben.

wie es bei wxWidgets aussieht weis ich nicht, aber GTK steht unter der LGPL, und kann deshalb auch in kommerziellen projekten verwendet werden.


clm[k1]

Coda
2005-02-16, 12:51:35
Wie schwer ist es eurer Meinung nach solch ein Control zu erzeugen? Schwerer als wenn ich das in MFC mache?Nein. MFC stinkt eigentlich immer.

wxWidgets ist komplett frei zur kommerziellen Verwendung.

Falls es GPL werden soll würde ich auch Qt empfehlen, wenn es dann die Windows GPL Version davon mal gibt (wohl erst mit Qt 4.0)

janjan
2005-02-16, 17:02:34
Danke für den Tip mit wxWindows, das sieht echt schick aus.

das mit dem Gui für Dialoge würde mich auch mal interessieren. Die beiden wahrscheinlich bekanntesten sind ja wxDesigner und DialogBlocks, wobei es von letzterem eine Demo Version gibt. Gibt noch was gutes für umsonst?


Als Entwicklungsumgebung sieht http://www.degarrah.com/chinookfree.php ganz gut aus, kennt das einer?

/me
2005-02-17, 17:44:03
Also ich muss sagen, dass mir QT wirklich gut gefällt. Sowohl von der Programmierung als auch von den damit erstellten Anwendungen ;) (Und falls das Programm Open Source werden soll, ist das ja bald kein Problem auch unter Windows)

dfagfgshdhgj
2005-02-19, 19:53:03
']Ob QT für dich in frage kommt, hängt zum einen davon ab, ob du dein Programm kommerziell vermarkten willst, oder ein freies Programm schreibst.

Denn wenn du QT für kommerzielle software einsetzen willst, dann werden lizenzgebühren an trolltech fällig. und dann musst du halt entscheiden ob du bereit bist dafür geld auszugeben.
Man kann auch unter der GPL lizenzierte Software gegen Geld verkloppen. Wenn das verboten wäre, wäre die Lizenz ja nicht frei.

Trap
2005-02-19, 19:58:47
Man kann auch unter der GPL lizenzierte Software gegen Geld verkloppen. Wenn das verboten wäre, wäre die Lizenz ja nicht frei.
Dürfen schon. Können ist ne andere Frage.

Coda
2005-02-19, 20:04:06
Ist alles richtig, aber man muss den Source dazulegen und jeder darf den vertreiben wie er lustig ist.
Dadurch wird man nicht sehr viel Gewinn machen mit den Verkäufen ;)

janjan
2005-02-21, 11:01:49
So, ich hab mal ein wenig mit wxWidgets rumgespielt:

1. Selten hat Interface Programmierung soviel Spaß gemacht wie mit wxWidgets! Nie wieder Win32API oder MFC oder so (hoffe ich zumindest ;) )

2. Es gibt zwei empfehlenswerte Gui Designer: DialogBlocks und VisualWx. Ersterer ist sehr ergonomisch, leicht zu bedienen und Shareware. Zum ankucken reicht die Demoversion, mit der kann man schon ganz schick arbeiten. VisualWx ist ein Tool für richtige Männer, unergonomisch bis zum geht nicht mehr aber trotzdem um einiges besser als DialogBlocks. DialogBlocks verhält sich beim Einsatz von den wxSizern 'etwas' komisch, mir gefällt das System von VisualWx definitiv besser. Der erste Eindruck von dem Tool war zwar 'Was ist das für Scheiß', aber nach 30 Minuten Arbeit überzeugt das voll und ganz.

3. Als Entwicklungsumgebung gibts unendlich viele Möglichkeiten. Da quasi jeder wichtige und unwichtige Compiler unterstützt wird hat man hier die freie wahl. Entweder benutzt man einen er obigen Gui Designer (die haben einen eingebauten Editor) oder man benutzt eine 'richtige' IDE (Ich hab es ums verrecken nicht geschafft bei den Gui Dingern die Compiler zu benutzen, da gibt es wohl trick die ich nicht rausgefunden habe ;))
Aus Gewohnheitsgründen benutze ich Visual Studio 6.0 und bin sehr zufrieden damit. Der Debugger ist Klasse und die .exe Dateien sind kleiner als z.B. mit GCC.
Die einfachste Möglichkeit ist eine Dev-Cpp Version mit eingebauter wxWidgets Unterstützung (Im off. wxWidgets Forum nach Dev-Cpp suchen, da gibt es die neuesten Versionen). Einfach runterladen, installieren, fertig. Bis auf den Gui editor sehr stabil und einfach zu bedienen. Aber der Gui Editor... naja, es gibt Besseres ;) (Wobei sich das in Zukunft wohl ändern soll, in ca. 1-2 monaten sollen da neue Versionen erscheinen)

Zusammenfassend: Nachdem man einmal die Funktionsweise der wxSizer verstanden hat, macht es einfach Spaß damit zu programmieren. Ich kanns nur weiterempfehlen :)

janjan
2005-02-21, 11:05:34
Ist alles richtig, aber man muss den Source dazulegen und jeder darf den vertreiben wie er lustig ist.
Dadurch wird man nicht sehr viel Gewinn machen mit den Verkäufen ;)

Ist es nicht so, dass man nur die Quelltexte veröffentlichen muss, die auf GPL'ten Material basieren? Angenommen man übernimmt ein Programm unter GPL, fügt Funktionen hinzu und packt allen den Code den man alleine verfasst hat z.B. in ein Plugin, dann müsste man diesen Code nicht veröffentlichen, oder?

zeckensack
2005-02-21, 11:46:37
Ist es nicht so, dass man nur die Quelltexte veröffentlichen muss, die auf GPL'ten Material basieren? Angenommen man übernimmt ein Programm unter GPL, fügt Funktionen hinzu und packt allen den Code den man alleine verfasst hat z.B. in ein Plugin, dann müsste man diesen Code nicht veröffentlichen, oder?Doch.
http://www.gnu.org/licenses/gpl-faq.html
Insbesondere das (http://www.gnu.org/licenses/gpl-faq.html#LinkingWithGPL) und das (http://www.gnu.org/licenses/gpl-faq.html#MereAggregation).
Ausnahmen sind aber möglich (http://www.gnu.org/licenses/gpl-faq.html#LinkingOverControlledInterface), wenn sie in der Lizenz drinstehen.

janjan
2005-02-21, 16:09:08
Da war ich dann wohl falsch informiert, danke für die Info :)