wxWidgets und “zufällige” Abstürze

September 18th, 2008 | Kategorien: C++, Linux, Microsoft | Tags: ,

Vorab: Ich finde wxWidgets toll! Aber hie und da ist es gut in der Lage mich in den Wahnsinn zu treiben. Ein Erfahrungsbericht:

  • Aus der Sicht eines Windowsprogrammierers ist es verdammt einfach Linux zu unterstützen! Ein praktisches Tool namens wxconfig kennt die Feinheiten des Linuxsystems auf dem es installiert ist und nimmt es dem Programmierer ab, Linker- und Compileroptionen statisch zu setzen. Bei meinem aktuellen Projekt übergeb ich als einzige Linker Option so zum Beispiel das:
    `wx-config --libs --gl-libs`

    Und schon werden die benötigten Libraries mitgelinkt. In der überaus heterogenen Welt der Linux Distributionen äusserst hilfreich!

  • Die RAD Tools sind vorhanden und zumindestens brauchbar. Ich persönlich habe mich für den wxFormBuilder entschieden. Dieser erzeugt eine Basisklasse mit allen Layoutinformationen und Controls und ich muss dann nur noch davon erben und kann dann Events überschreiben. Andererseits muss ich nach jedem Erstellvorgang den Quellcode doch nochmal von Hand anpassen, weil die “relative Pfadangaben” Option vor alle Pfade ein “./..” klatscht. Das entspricht zwar dann dem Layout in der Quellcode Ordnerhierarchie, aber nicht der Ordnerhierarchie des Programms.
  • Einige Teile von wxWidgets wirken sehr “offiziell” sind aber nur sehr mäßig unterstützt. In meinem Fall war das wxGlCanvas, also eine “integrierte” OpenGL Zeichenfläche ein Stolperstein. Ich verweise hierbei auf einen Thread von mir im wxWidgets Forum. Für Faule: die “Lösung” meines Problems war am Ende, dass sich zwei (verschieden überladene) Konstruktoren undokumentiert anders Verhalten haben …
  • Die wxString Klasse hat irgendwie in Verbindung mit dem gcc Compiler (und auch dem MinGW) einen Klatsch weg. wxString::Format() und wxString(char*, wxConvUTF8) führen teilweise zu äusserst bizarren Fehlern, die erst nach den obigen Methoden auftauchen. Ich hab keine Ahung woran das liegt, vielleicht ist es am Ende ja doch nur ein Fehler auf meiner Seite … Der MSVC++ Compiler frissts aber!
No comments yet.