Problem mit SDL!



  • Ich hoffe , dass ich richtig gepostet habe. Ich habe es mit absicht ins LinuxForum gepostet und nicht zu Spieleprogrammierung , da ich SDL unter Linux nutze.

    So hier das Problem:
    Wenn ich ein SDL prog schreib , dann kan ich draufklicken und es läuft im Fenster ab. Seit ich die Funktion IMG_Load( )in meinem Prog benutze , schließt sich das Fenster wieder. Wenn ich das Prog aus der Konsole starte , dann läuft des und schließt siche nicht. Anfangs hab ich aus diesem Grund das Programm auch aus xterm aus gestartet , aber jetzt geht nicht mal das! (Es schließt siche wieder). Aber aus der Konsole(bash) läuft des und scließt sich nicht gleich.

    Irgendwie merkwürdig...

    Kann mir jemand helfen? Danke im vorraus.
    (Und noch was...hab des prog im debugger laufen lassen: Anscheinend können *.png dateien nicht gfunden/geöffnet werden......aber wenn ich es aus der bash starte , dann läuft es)



  • womöglich benutzt du relative pfade zu den png-dateien und während du dich in der bash in dem richtigen verzeichnis befindest, läuft der konqueror in einem anderen.



  • Sowohl der Konqueror als auch die bash sind im gleichen Verzeichnis. Allerdings , wenn ich im Konqueror aus dem Terminal-Emulator das sdl-prog starte , dann öäuft das gut...bloß wenn ich drauf klicke oder aus xterm heraus...(ps: ICh lade die *.png files mit IMG_Load("abc.png");)



  • alex89ru schrieb:

    Sowohl der Konqueror als auch die bash sind im gleichen Verzeichnis.

    das glaube ich nicht.
    (der konqueror zeigt dir das nur verzeichnis an, läuft aber selbst in einem anderen)



  • DrGreenthumb schrieb:

    alex89ru schrieb:

    Sowohl der Konqueror als auch die bash sind im gleichen Verzeichnis.

    das glaube ich nicht.
    (der konqueror zeigt dir das nur verzeichnis an, läuft aber selbst in einem anderen)

    HHHMH? Wieso des? Was kann ich dagegen tun? Soll ich im sourcecode die Pfade ganz abgeben? Also: /home/alex/development/SDL/abc.png
    ..ist aber nicht elegant...



  • Hab's gerade ausprobiert...anscheinend hattes du recht.
    Wenn ich /home/alex/development/SDL/abc.png angebe , dann geht des auch im Konqueror...aber das ist doch keine richtige Lösung! Gibt es eine Alternative...pfad auslesen oder.Aber wie?
    Danke im vorraus.



  • alex89ru schrieb:

    Was kann ich dagegen tun? Soll ich im sourcecode die Pfade ganz abgeben? Also: /home/alex/development/SDL/abc.png
    ..ist aber nicht elegant...

    entweder das, oder ein shellscript schreiben was zuerst in /home/alex/development/SDL wechselt und dann das programm aufruft.
    Ansonsten könnte man noch versuchen, den Pfad des Programms rauszufinden, aber dafür gibts AFAIK keine plattformunabhängige Lösung.



  • Eine Linuxspezifische Lösung würde mir reichen. Wüsstest du da was?



  • chdir("/home/alex/development/SDL/");
    

    ...funktioniert , ist aber unelegant...
    Danach hab ich es mit

    chdir(get_current_dir_name());
    

    versucht,geht aber nicht..da Fenster schließt wieder! Was soll ich tun?



  • Versuch mal:

    getcwd(buf,PATH_MAX);
    chdir(buf);
    


  • getcwd und get_current_dir_name ist beides ".", also nichts neues in dem fall.

    alex89ru schrieb:

    Eine Linuxspezifische Lösung würde mir reichen. Wüsstest du da was?

    am besten du nimmst einen festen pfad an, zb. /usr/local/share/<deinprogramm>/bild.png

    Den Pfad sollte man dann irgendwo angeben können, zb. in ~/.config oder per kommandozeile oder beim kompilieren. Am besten gleich alle 3 Möglichkeiten anbieten!

    (wenn man aber wirklich den platz des programms haben will, geht auch /proc/<pid>/exe)


Anmelden zum Antworten