Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » error undefined symbol. (linux, MythTV)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
25.08.2005, 10:34 Uhr
~jogibear9988
Gast


Hallo,

Ich habe an einer erweiterung an einem Prg unter Linux geschrieben. (mythTV Plugin)

Nun habe Ich folgendes problem. das programm startet nicht und bringt mir folgenden fehler:
undefined symbol _ZTV19MythSearchRomDialog.

Mein zusätzliches Source File sieht so aus: searchrom.cpp


C++:
using namespace std;
#include "searchrom.h"
#include <mythtv/mythdialogs.h>
#include <mythtv/mythwidgets.h>
#include <mythtv/mythcontext.h>
void MythSearchRomDialog::dosearch(void)
{
    MythPopupBox *search_rom_popup = new MythPopupBox(gContext->GetMainWindow(), "search_rom_popup");

    // create the widgets
    search_rom_popup->addLabel(QString("Search for Rom..."));
    editor = new MythRemoteLineEdit(search_rom_popup);
    //connect(editor, SIGNAL(textChanged()), this, SLOT(searchTextChanged()));
    search_rom_popup->addWidget(editor);
    editor->setFocus();
    search_rom_popup->addButton(tr("OK"), search_rom_popup, SLOT(okPressed()));
    search_rom_popup->addButton(tr("Cancel"), search_rom_popup, SLOT(cancelPressed()));
}

void MythSearchRomDialog::okPressed(void)
{
}

void MythSearchRomDialog::cancelPressed(void)
{
}

MythSearchRomDialog::~MythSearchRomDialog()
{
    if (editor)
    {
        delete editor;
        editor = NULL;
    }
}




und so das headerfile:


C++:
#ifndef GAMESEARCH_H_
#define GAMESEARCH_H_
#include <mythtv/mythdialogs.h>
#include <mythtv/mythdialogs.h>
#include <mythtv/mythwidgets.h>
class MythSearchRomDialog  //: public MythPopupBox
{
Q_OBJECT

  public:
    ~MythSearchRomDialog();

  public:
    void dosearch(void);

protected slots:
    void okPressed(void);
    void cancelPressed(void);

  private:

    QLabel              *caption;
    MythRemoteLineEdit  *editor;
    QButton             *ok_button;
    QButton             *cancel_button;
    MythPopupBox        *search_rom_popup;
};

#endif




und so der aufruf aus anderm sourcefile:

headerfile:
...
private:
MythSerachRomDialog *srom;
...


cppfile:
...
srom = new MythSearchRomDialog
srom->dosearch();
...




was mache ich falsch?? wo ist mein denkfehler??
compilieren geht ohne probleme...

mod edit: Benutze die CPP Tags selber

Dieser Post wurde am 25.08.2005 um 16:14 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.08.2005, 10:52 Uhr
typecast
aka loddab
(Operator)



Zitat:

headerfile:
...
private:
MythSerachRomDialog *srom;
...



Das MythSerachRomDialog wird wohl ein Tippfehler beim uebertragen ins Forum gewesen sein, oder?


Der eigentliche Fehler ist aber ein Linkerfehler.
Vermutlich hast du vergessen gegen das Object File, dass MythSearchRomDialog enthaelt zu linken.

Probier als allererstes mal ein ein make clean und danach wieder ein make. Vielleicht sind die Dependencies in der Makefile nicht richtig eingetragen und da der Dialog wurde nicht kompiliert.

Wenn das nicht hilft, dann ueberpruefe mal, ob die ObjektDatei zum endgueltigen zusammenlinken verwendet wird.
Am Ende des Kompiliervorgangs sollte sich eine Zeile befinden, die ungefaehr so aussehen sollte:


Code:
// vielleicht steht da statt g++ auch ld oder sowas
g++ -o pluginName object1.o object2.o object3.o ...



In der Liste dieser ObjectFiles sollte auch die Objekt Datei mit dem MythSearchRomDialog stehen.
Wenn nicht, musst du das Objekt in die Makefile eintragen.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.08.2005, 11:15 Uhr
~jogibear9988
Gast


is dieser liste ist das objekt enthalten!!!

g++ -shared -o libmythgame.so main.o gamehandler.o rominfo.o gametree.o searchrom.o unzip.o gamesettings.o dbcheck.o rom_metadata.o romedit.o moc_gamesettings.o moc_gametree.o -L/usr/kde/3.3/lib -L/usr/share/qt3/lib -L/usr/lib -lqt-mt -lpthread

und searchrom.o hat er ja erzeugt...

ich verstehs nich...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.08.2005, 16:00 Uhr
~jogibear9988
Gast


habe das Problem nun eingegrenzt...

wen ich bei

class MythSearchRomDialog //: public MythPopupBox
{
Q_OBJECT

das qobject rausnehme funktioniert der aufruf...
auch das programm wird gestartet.

aber meine signale werden nicht an den aufrufer zurückgegeben..
(d.h. ich kann nicht auf schaltflächenklicks reagieren!)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.08.2005, 17:54 Uhr
typecast
aka loddab
(Operator)



Zitat von ~jogibear9988:
is dieser liste ist das objekt enthalten!!!

g++ -shared -o libmythgame.so main.o gamehandler.o rominfo.o gametree.o searchrom.o unzip.o gamesettings.o dbcheck.o rom_metadata.o romedit.o moc_gamesettings.o moc_gametree.o -L/usr/kde/3.3/lib -L/usr/share/qt3/lib -L/usr/lib -lqt-mt -lpthread

und searchrom.o hat er ja erzeugt...

ich verstehs nich...


Es fehlt die Datei moc_searchrom.o
Dein Post 003 bestaetigt das
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: