Portierung wxMSW zu wxGTK führt zu Menü-Problem



  • Hallo zusammen,

    seit einiger Zeit schreibe ich eine Software, die unter Windows läuft. Nun wollte ich die auf Linux (Ubuntu) portieren. Daher habe ich von anfang an wxWidgets eingesetzt.

    Ich verwende folgende Konfiguration:
    1.) auf Ubunut:
    a.) eclipse/cdt 7.x
    b.) g++ 4.4.3
    c.) wxWidgets-2.9.1

    Nun das Problem. Sämtliche Bibliotheken konnte ich portieren, genau so wie ich wxWidgets-2.9.1 als Bibliotheken erstellen konnte. Einige Zeit lief es auch, wie erwünscht, doch plötzlich erscheint das Menu nicht mehr. Es erscheint nur noch ein leeres "Frame"!

    Falls ich nun einen Breakpoint setze bei der Zeile, in der das Menu erstellt wird. So stoppt die Eclipse-IDE an dieser Stelle gar nie. Mir scheint es, als würde dieser Teil des Codes nicht mehr aufgerufen.

    Mittels dem "menu-sample" habe ich die installation getestet.
    Sämtliche Bibliotheken habe ich unter
    /usr/local/lib/plexso abgelegt. Dies betrifft meine eigenen, und die von wxWidgets.
    Die Bibliotheken binde ich mittels "-Wl,-rpath,/usr/local/lib/plexso" als Linker-Flag ein. Auch wenn dies nicht als der edelste Weg gilt, so funktioniert er beim "menu-sample" problemlos.

    Hat jemand schon ein ähnliches Problem gehabt und konnte es lösen?
    Kennt jemand ein Tool, mit dem ich kontrollieren kann, wann welche Bibliothek geladen wird?
    Auch sämtliche anderen Tips sind herzlichst willkommen.

    Besten Dank im Voraus.

    Michael



  • Kannst du mal ein paar Sachen ausprobieren?

    0. Hast du a) wxWidgets im Debug-Modus kompiliert/gelinkt (vielleicht nicht nötig) und b) dein Programm mit -g und ohne -s kompiliert?
    1. Breakpoints in der Aufrufenden Funktion setzen und schauen, ob der Debugger da vorbei kommt. Wenn es eine Event-Funktion ist, gibt es natürlich keine aufrufende Funktion in deinem Projekt, alternativ solltest du vielleicht eine Message-Box am Anfang deiner Funktion machen.
    2. Wenn eine Event-Funktion nicht aufgerufen wird, solltest du dein Problem wenn möglich auf ein möglichst kleines Beispiel reduzieren, in dem der Fehler dann leichter zu Finden ist. Vielleicht kannst du das dann auch posten.



  • Ohne Code kommen wir hier nicht weiter.



  • Hallo zusammen und vielen Dank für die Antworten.

    Es scheint, als hätte ich das Problem gefunden. Ich ging bisher eingentlich davon aus, dass ich den Code genügend "verkleinert" hätte, um das Problem zu finden, dem war aber nicht so! Ich falle weit vor dem eigentlichen "Menu-Code" aus dem Frame-Konstruktor, weshalb ich gar nie ein Menü erstellt habe.

    Das Problem liegt primär daran, dass ich zwar wxWidgets verwendet habe, wegen der Portabilität, nicht aber weiter darauf geachtet habe, auch wirklich portablen Code zu erstellen. Damit versuche ich ein Verzeichnis zu öffnen, dass es unter Ubuntu gar nicht gibt! Anschliessend wird ein "return" statement ausgeführt und ich fliege zurück in die Applikations-OnInit-Routine!

    Definitiv mein Fehler!

    Besten Dank für Eure Hilfe.

    Beste Grüsse

    Michael


Anmelden zum Antworten