Qt, Plugin, "expected identifier before string constant

Alles rund um die Programmierung mit Qt
Antworten
dusti
Beiträge: 35
Registriert: 7. März 2009 14:24

Qt, Plugin, "expected identifier before string constant

Beitrag von dusti »

Ich möchte mein Programm mit Plugins erweitern. Dazu möchte ich ein Interface deklarieren. Dafür habe ich folgenden header:

Code: Alles auswählen

#ifndef LYRICSPLUGININTERFACE_H
#define LYRICSPLUGININTERFACE_H

#include <QString>

class LyricsPluginInterface
{
public:
    virtual ~LyricsPluginInterface();

    virtual QString getDescription();
    virtual QString getCredits();
    virtual QString getLyrics(QString artist, QString album, QString song);
};
Q_DECLARE_INTERFACE(LyricsPluginInterface, "ch.favor-it.MMP.LyricsPluginInterface/1.0")

#endif // LYRICSPLUGININTERFACE_H
Das Problem ist nun, dass ich folgende Fehler bekomme:
..\MMP\/lyricsplugininterface.h:15: error: expected identifier before string constant

..\MMP\/lyricsplugininterface.h:15: error: expected ',' or '...' before string constant

..\MMP\/lyricsplugininterface.h:15: error: expected constructor, destructor, or type conversion at end of input
Zeile 15 bezieht sich auf die Zeile: "Q_DECLARE_INTERFACE(...)"
Ich habe absolut keine Idee, was da falsch sein könnte. hat jemand einen Tipp?

Danke schonmal, dusti
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Geh mal auf http://doc.qt.nokia.com/latest/plugins-howto.html und scroll runter bis The Lower-Level API: Extending Qt Applications .. dann vorschtig weiter bis For example, here's the definition of an interface class: dann schaust du noch mal gaaaanz scharf hin ... und siehst was die haben und du nicht. S klappts dann auch mit dem Interface :) .. und genau dafür ist die API auch da ;)
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
dusti
Beiträge: 35
Registriert: 7. März 2009 14:24

Beitrag von dusti »

Danke, du hast mich auf die richtige Spur gebracht. Allerdings stehe ich jetzt wirklich vor einem Rätsel. Ich habe nun folgenden Code:

Code: Alles auswählen

#ifndef LYRICSPLUGININTERFACE_H
#define LYRICSPLUGININTERFACE_H

#include <QString>
#include <QWidget>

class LyricsPluginInterface
{
public:
    virtual ~LyricsPluginInterface();

    virtual QString getDescription();
    virtual QString getCredits();
    virtual QString getLyrics(QString artist, QString album, QString song);
};
Q_DECLARE_INTERFACE(LyricsPluginInterface, "ch.favor-it.MMP.LyricsPluginInterface/1.0")

#endif // LYRICSPLUGININTERFACE_H
Der einzige Unterschied zu obigem Code ist, dass ich QWidget noch inkludiert habe. Wieso muss ein selbstgeschriebenes Plugin QWidget inkludieren? Ich möchte ja gar keine GUI in dem Plugin machen, ausserdem benutze ich nirgendwo ein QWidget, wieso beschwert sich da also der Compiler? Ausserdem konnte ich nirgendwo in der Dokumentation lesen, dass es notwendig ist, QWidget zu inkludieren. Oder habe ich da einfach was überlesen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Weil QWidget wohl die richtigen Dateien inkludiert... Siehe http://doc.qt.nokia.com/4.7/qtplugin.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

Das Stichwort ist PURE VIRTUAL ... bei denen steht immer noch ein "= 0"; hinter den Methodendeklarationen ... versuch das mal bei dir und nimm das QWidget wieder raus ...
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
Antworten