Habe folgende Fehlermeldung. QT 2.3 *VC++ 6.0

Alles rund um die Programmierung mit Qt
Antworten
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Habe folgende Fehlermeldung. QT 2.3 *VC++ 6.0

Beitrag von stonecold »

Moin ich habe da mal eine Frage und hoffe ihr könnt mir weiterhelfen.
Also es ist so, dass ich mir mit dem Designer ne GUI zusammengeklickt und anschließend die entsprechenden Files generiert habe. Nun will ich in VC++ ein neues Projekt erzeugen und die Datein dort mit integrieren. Um weiterhin Änderungen mit dem Designer machen zu können Programmiere ich die Slots in einer anderen Datei und überlade damit die automatisch erzeugeten Fkt. Das hat den Sinn, dass ich jetzt mit den Designer zusätzliche Elemente einfügen und die Files neu erzeugen kann ohne das die bereits ausprogrammierten Fkt´s überschrieben werden.
Ich habe zahlreiche Fehler bereits beseitigt bekomme aber beim Linken noch folgende Fehlermeldung mit der ich nichts mehr anfangen kann.

Linker-Vorgang läuft...
reader_gui_slots.obj : error LNK2001: Nichtaufgeloestes externes Symbol "protected: virtual void __thiscall reader_gui_slots::initMetaObject(void)" (?initMetaObject@reader_gui_slots@@MAEXXZ)

reader_gui_slots.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual char const * __thiscall reader_gui_slots::className(void)const " (?className@reader_gui_slots@@UBEPBDXZ)

reader_gui_slots.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual __thiscall reader_gui_slots::~reader_gui_slots(void)" (??1reader_gui_slots@@UAE@XZ)

reader_gui_slots.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static class QMetaObject * __cdecl reader_gui_slots::staticMetaObject(void)" (?staticMetaObject@reader_gui_slots@@SAPAVQMetaObject@@XZ)

Debug/reader_main.exe : fatal error LNK1120: 4 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.

z.B. weiß ich nicht wo das initMetaObj herkommt. Hat das mit der Moc datei zu tun? Was macht die eigentlich? Kann mir einer helfen?

Ich bedanke mich schonmal. Gruß Mario
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Es fehlt ein 'moc'-Aufruf auf einige Header... siehe hier: http://doc.trolltech.com/4.0/moc.html
Sollte sich nicht so viel geändert haben seit 2.3 - evtl. sind die Aufrufe etwas anders. Eventuell gibts in 2.3 ja auch schon qmake...

Wieso benutzt man ein so altes Framework überhaupt noch?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Warum das Framework!?!

Beitrag von stonecold »

Ich bin im Praxissemester und dort wird mir nur dieses geboten. Ich würde gerne ein neueres Framework verwenden aber es Fehlt mir die Zeit nachzuschauen wie ich die Sachen miteinader verbinde. Z.B. VC 2003/2005 und das neue QT. Werde mich aber demnächst damit befassen.
Danke dir für die schnelle Antwort...
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

Es Funktioniert noch nicht....

Beitrag von stonecold »

@Christian
Ich hatte es bereits so realiesiert.....
findest du den Fehler

#ifndef READER_GUI_SLOTS_H
#define READER_GUI_SLOTS_H

#include "reader_gui.h"

class reader_gui_slots : public reader_gui
{
Q_OBJECT

public:

reader_gui_slots( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );

~reader_gui_slots( void );

protected slots:

virtual void search_slot();
virtual void set_age(int);
virtual void set_country(int);
virtual void set_email();
virtual void set_first_name();
virtual void set_gender(int);
virtual void set_last_name();
virtual void set_nick_name();
virtual void set_only_online(bool);
virtual void set_photo_first(bool);
};

#endif // READER_GUI_SLOTS_H

#include <qcheckbox.h>
#include <qcombobox.h>
#include <qlabel.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qvariant.h>
#include <qtooltip.h>
#include <qwhatsthis.h>
#include <stdio.h>
#include "reader_gui_slots.h"
#include "reader_gui.h"

reader_gui_slots::reader_gui_slots( QWidget *parent,
const char *name,
bool modal,
WFlags fl)

: reader_gui( parent, name, modal, fl )
{
printf("Das ist ein Test");
}

void reader_gui_slots::search_slot()
{
qWarning( "ICQ_Reader::search_slot(): Not implemented yet!" );
}

void reader_gui_slots::set_age(int)
{
qWarning( "ICQ_Reader::set_age(int): Not implemented yet!" );
}

void reader_gui_slots::set_country(int)
{
qWarning( "ICQ_Reader::set_country(int): Not implemented yet!" );
}

void reader_gui_slots::set_email()
{
qWarning( "ICQ_Reader::set_email(): Not implemented yet!" );
}

void reader_gui_slots::set_first_name()
{
qWarning( "ICQ_Reader::set_first_name(): Not implemented yet!" );
}

void reader_gui_slots::set_gender(int)
{
qWarning( "ICQ_Reader::set_gender(int): Not implemented yet!" );
}

void reader_gui_slots::set_last_name()
{
qWarning( "ICQ_Reader::set_last_name(): Not implemented yet!" );
}

void reader_gui_slots::set_nick_name()
{
qWarning( "ICQ_Reader::set_nick_name(): Not implemented yet!" );
}

void reader_gui_slots::set_only_online(bool)
{
qWarning( "ICQ_Reader::set_only_online(bool): Not implemented yet!" );
}

void reader_gui_slots::set_photo_first(bool)
{
qWarning( "ICQ_Reader::set_photo_first(bool): Not implemented yet!" );
}

Die includes aus der .cpp -Datei sind warscheinlich nicht alle notwenig...Hatte Teile des Codes kopiert.....
Die reader_gui ist der automatisch erzeugete Teil

gMario
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wie gesagt fehlt noch ein moc-Aufruf... so in der Art 'moc gui_slots.h -o moc_gui_slots.cpp' und die dadurch erzeugte Datei muss dann in moc_gui_slots.cpp inkludiert werden -> #include "moc_gui_slots.cpp" oder eben als neue Datei in das Projekt mit aufgenommen werden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

...

Beitrag von stonecold »

also ich habe jetzt folgendes gemacht...

moc reader_gui_slots.h -o moc_reader_gui_slots.cpp

und das neu erzeugte File in das Projekt eingebunden...Und was soll ich sagen.....?

Es funktionirt... Ursache für den Fehler ist warscheinlich mangelndes Wissen darüber was es z.B. mit dem moc auf sich hat. Ich werde dieses nacharbeiten. Danke für die Hilfe und bis bald....
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn Du für den Header einen benutzerdefinierten Buildschritt definierst, der moc aufruft sollte auch automatisch nach jeder Änderung am Header die moc-Datei neu erstellt werden. So macht es qmake auch.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stonecold
Beiträge: 147
Registriert: 19. Oktober 2005 10:48

das erspart Arbeit

Beitrag von stonecold »

Weiß zwar noch nicht ganz genau wie ich das Ding definiere aber ich werde das schon hinbekommen. Habe zur Zeit eine Batchdatei welche die notwendigen Schritte durchführt.
Danke für die Tips....

Der Tag ist gerettet... :D

Dir noch einen schönen......bis demnächts (mit 99.9%iger Wahrscheinlichkeit :wink: )
Antworten