Announcement

Collapse
No announcement yet.

Hilfe bei QT

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe bei QT

    Ich habe ein etwas umfangreicheres Programm geschrieben, und bekomme beim Übersetzten folgende Fehlermeldung, mit der ich <B>nichts</B> anfangen kann:

    <PRE>
    Document.o: In function `Document:ocument(QWidget *, char const *, int)':
    Document.o(.text+0x27): undefined reference to `Document::QPaintDevice virtual table'
    Document.o(.text+0x31): undefined reference to `Document virtual table'
    Bibliothek.o: In function `Bibliothek::Bibliothek(void)':
    Bibliothek.o(.text+0x1e): undefined reference to `Bibliothek::QPaintDevice virtual table'
    Bibliothek.o(.text+0x25): undefined reference to `Bibliothek virtual table'
    Menu.o: In function `Menu::Menu(void)':
    Menu.o(.text+0x101): undefined reference to `Menu::QPaintDevice virtual table'
    Menu.o(.text+0x108): undefined reference to `Menu virtual table'
    collect2: ld returned 1 exit status
    </PRE>

    Die selbe Fehlermeldung bekomme ich bei unterschiedlichen Kompilerversionen von gnu.

    Kann mir jeman helfen?

  • #2
    Zwei Schüsse ins Blaue:
    <ul>
    <li>Das "Bibliothek::QPaintDevice" kommt mir komisch vor. Vielleicht hast du den Header, in dem QPaintDevice definiert ist, nicht eingebunden?
    <li>
    Das "undefined reference to `Document virtual table'" klingt so, als hättest du das Objektfile (*.o) zu Document nicht dazugelinkt.
    </ul>
    <p>Ciao, Uli

    Comment


    • #3
      Danke, aber das war es nicht, unter anderem da ich keine einzige Methode aus der Bibliothek QPaintDevice benutzte.

      Habe mal das Q_OBJECT weggelassen, und die Fehler waren verschwunden.

      Ok, jetzt funktioniert mein Menu nicht mehr, d.h. die slots lassen sich nicht mehr ansprechen (für sie hatte ich ja das Q_OBJECT eingefügt). Aber das ist eine andere Baustelle

      Comment


      • #4
        Ach so - dann hast du wahrscheinlich vergessen, moc aufzurufen.
        <br>Uli

        Comment


        • #5
          Das selbe problem, nur mit hilfe von moc wird jetzt folgendes angezeigt:

          <PRE>Document.moc:45: new declaration `static void Document::staticMetaObject()'
          Document.h:6: ambiguates old declaration `static class QMetaObject * Document::staticMetaObject()'
          <PRE>

          Wobei ich betonen möchte, das das ganze schon mal gelaufen ist, zwar in einer niedrigegen Entwicklungsstufe, aber es liefe!!!

          Falls es interessiert, der wichtige Teil der <B>Document.h<B> sieht so aus:

          <PRE>class Document: public QMainWindow
          {
          Q_OBJECT
          public:
          QLineEdit *author, *title, *journal, *year, *publisher;
          QLineEdit *organization, *chapter, *type, *editor, *school;
          QLineEdit *volume, *number, *pages, *month, *note, *series;
          QLineEdit *address, *edition, *key, *howpublished, *booktitle;
          QLineEdit *institution;

          QString Name, dateiname;

          Document(QWidget* parent, const char *name, int wflags);

          ....
          <PRE>

          Danke für die hilf

          Comment

          Working...
          X