Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Bildschirmschoner programmieren

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
jensh



Anmeldungsdatum: 07.05.2003
Beiträge: 1

BeitragVerfasst am: 07. Mai 2003 13:23   Titel: Bildschirmschoner programmieren

Hallo,

ich möchte gerne einen Bildschirmschoner unter Linux mit C++ schreiben.
Er soll im Hintergrund ein festes Bild(z.B. jpg) und davor ein animiertes Gif zeigen.

Womit könnte ich so etwas realisieren?
Außer QT habe ich bisher noch keine Möglichkeit gefunden animierte Gifs anzuzeigen.
SDL z.B. zeigt mit der SDL_image Bibliothek nur das erste Frame an.

Aus Verzweiflung habe ich mich über den Source Code der KDE Bildschirmschoner hergemacht, stosse dabei
allerdings schon beim Kompilieren an meine Grenzen. Ich bekomme haufenweise Meldungen über undefinierte Referenzen.
Meiner Meinung nach, liegt so etwas daran, dass die passende Bibliothek nicht eingebunden ist. Ich wüsste allerdings nicht mehr welche das sein sollte. Die meisten KDE und QT Bibliotheken habe ich bereits ausprobiert...

g++ -o ScreenSaver.kss ScreenSaver.cpp -I $QTDIR/include -L $QTDIR/lib -lqt -lqui -lqt-mt -leditor -I /opt/kde3/include -L /opt/kde3/lib -lkdecore -lkdeui -lkscreensaver -lkdec -lkdesu -lkio -lkdefx -lksgrd -lkgantt -lkdevelopdbg -lkabc

Trotzdem bekomme ich die Fehlermeldungen:

/tmp/ccaAetgV.o: In function `KAnimSetup::KAnimSetup[not-in-charge](QWidget*, char const*)':
/tmp/ccaAetgV.o(.text+0x12a): undefined reference to `vtable for KAnimSetup'
/tmp/ccaAetgV.o(.text+0x136): undefined reference to `vtable for KAnimSetup'
/tmp/ccaAetgV.o: In function `KAnimSetup::KAnimSetup[in-charge](QWidget*, char const*)':
/tmp/ccaAetgV.o(.text+0x1f8): undefined reference to `vtable for KAnimSetup'
/tmp/ccaAetgV.o(.text+0x204): undefined reference to `vtable for KAnimSetup'
/tmp/ccaAetgV.o: In function `KAnimSaver::KAnimSaver[not-in-charge](unsigned long)':
/tmp/ccaAetgV.o(.text+0x2be): undefined reference to `vtable for KAnimSaver'
/tmp/ccaAetgV.o(.text+0x2ca): undefined reference to `vtable for KAnimSaver'
/tmp/ccaAetgV.o: In function `KAnimSaver::KAnimSaver[in-charge](unsigned long)':
/tmp/ccaAetgV.o(.text+0x2ec): undefined reference to `vtable for KAnimSaver'
/tmp/ccaAetgV.o(.text+0x2f8): undefined reference to `vtable for KAnimSaver'
/tmp/ccaAetgV.o: In function `KAnimSaver::~KAnimSaver [not-in-charge]()':
/tmp/ccaAetgV.o(.text+0x309): undefined reference to `vtable for KAnimSaver'
/tmp/ccaAetgV.o(.text+0x315): more undefined references to `vtable for KAnimSaver' follow
collect2: ld returned 1 exit status

Der dazu gehörige Code orientiert sich stark am KDE Bildschirmschoner "banner"(dem Lauftext).
Beim Kompilieren des Originalsourcecodes erhalte ich übrigens ähnliche Fehlermeldungen.

---------Anfang Screensaver.h------------------------------------------------------------------------
#ifndef __ScreenSaver_H__
#define __ScreenSaver_H__
#include <qdialog.h>
#include <kscreensaver.h>

class KAnimSaver : public KScreenSaver
{
Q_OBJECT
public:
KAnimSaver( WId id );
virtual ~KAnimSaver();
};

class KAnimSetup : public QDialog
{
Q_OBJECT
public:
KAnimSetup( QWidget *parent = NULL, const char *name = NULL );
};
#endif
--------Ende Screensaver.h---------------------------------------------------------------------------

--------Anfang Screensaver.cpp-----------------------------------------------------------------------
#include <qlabel.h>
#include <kapplication.h>
#include <kglobal.h>
#include <klocale.h>

#include <ScreenSaver.h>
// Aus kapplication.h übernommen
extern "C"
{
const char *kss_applicationName = "KAnimSaver.kss";
const char *kss_description = I18N_NOOP( "KAnimSaver" );
const char *kss_version = "1.0";
KAnimSaver *kss_create( WId id )
{
return new KAnimSaver ( id );// return your KScreenSaver derived screensaver
}
QDialog *kss_setup()
{
return new KAnimSetup();// return your modal setup dialog
}
}
// Bildschirmschoner Setup Dialog in der KDE
KAnimSetup::KAnimSetup( QWidget* parent, const char* name ) : QDialog( parent, name, TRUE )
{
QLabel* label;
label = new QLabel(this,"keine Einstellungen");
};

KAnimSaver::KAnimSaver( WId id ) : KScreenSaver( id )
{
};

KAnimSaver::~KAnimSaver()
{
};
--------Ende Screensaver.cpp-------------------------------------------------------------------------

Selbst wenn ihr mir mit diesem konkreten Problem nicht helfen könnt, wäre ich sehr dankbar für jeden Tipp, wie ich meine Idee
am Besten (und für mich besser auch am Einfachsten) umsetzen kann.

Soweit schonmal vielen Dank fürs Durchlesen,

Jens
 
Benutzer-Profile anzeigen Private Nachricht senden

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 09. Mai 2003 13:52   Titel: Re: Bildschirmschoner programmieren

Hi!

Die Fehlermeldung ist mir bekannt, denn ich bin gerade selbst darüber gestolpert. Sie tritt dann auf, wenn du eine virtuelle Methode deklariert, aber nicht implementiert hast. Also: es fehlt die Implementierung einer Methode.

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy