Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallöchen,

ich bin momentan dabei, vom qt-tutorial ( http://doc.trolltech.com/3.3/tutorial1-08.html ), die Beispiel-Aufgaben durchzuarbeiten. Und ab da, wo es mehrere Files gibt, kann ich nichts mehr kompilieren. Bei Kapitel 8 zum Beispiel (siehe link) kommen mehrere solcher:

testqt error LNK2005: "public: __thiscall MyWidget::MyWidget(class QWidget *,char const *)" (??0MyWidget@@QAE@PAVQWidget@@PBD@Z) already defined in lcdrange.obj

Fehlermeldungen.

Ich versteh so langsam nicht mehr womit das zusammen hängt, für mich sind das böhmische dörfer. Mit der Support seite von MSDN komm ich auch nicht so wirklich klar. Hat jemand so ne meldung schon mal gehabt, und wenn ja woran liegt das? Eigentlich sollten doch solche Aufgaben in tutorials keine fehlermeldungen ausspucken, oder? Oder wäre es möglich dass man im VisualStudio bestimmte einstellungen treffen muss? Bitte helft mir, ich weiß solangsam nicht mehr weiter.

Mfg,

Reality

Geschrieben

Moin,

gib doch bitte etwas mehr Infos.

Die Beispiele aus dem Tutorial funktionieren ansich allesamt.

Verrate doch mal etwas mehr ueber deine Vorgehensweise, deinem Compiler usw.

Goos

Geschrieben

Ok,

also ich habe ein Projekt angelegt, die 3 cpp-Files in einem "Source-Files" ordner angelegt und die 2 Header Files in einem "Header-Files" ordner angelegt. Ich benutze VisualStudio2003. Die Files sind allesamt im Debug-Ordner des Projektes gespeichert. Hmmm... musst du sonst noch was wissen?

Geschrieben

Das kann nicht alles sein, was du gemacht hast. Der Fehlermeldung zufolge ist irgendwie der MyWidget-Konstruktor in lcdrange.cpp gelandet. Und da er in main.cpp wohl auch noch drin ist, beschwert sich der Linker.

Geschrieben

In den Tutorial Ordnern liegt jeweils auch ein *.dsp File.

Oeffne das mal mit deinem Visual-Studio und klick dann dort beim Oeffnen auf konvertieren.

Auf diese Weise kannst bei den Tutorials fast nix falsch machen.

Goos

Geschrieben

@Klotzkopp:

Nein ich hab die Dateien nur so erstellt und den Text aus dem Tutorial kopiert und eingefügt, und dann wollte ich es eben kompilieren... Braucht man vielleicht bestimmte Projekt-Einstellungen, damiit die Sache funktioniert?

@Goos:

Ich finde in dem Tutorial keine *.dsp-Datei, bist du dir sicher, dass bei diesem Tutorial eine/mehrere dabei sind?

Geschrieben

#include <qapplication.h>

#include <qpushbutton.h>

#include <qlcdnumber.h>

#include <qfont.h>

#include <qlayout.h>


#include "lcdrange.h"

#include "cannon.h"



class MyWidget: public QWidget

{

public:

    MyWidget( QWidget *parent=0, const char *name=0 );

};



MyWidget::MyWidget( QWidget *parent, const char *name )

        : QWidget( parent, name )

{

    QPushButton *quit = new QPushButton( "Quit", this, "quit" );

    quit->setFont( QFont( "Times", 18, QFont::Bold ) );


    connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );


    LCDRange *angle = new LCDRange( this, "angle" );

    angle->setRange( 5, 70 );


    CannonField *cannonField

        = new CannonField( this, "cannonField" );


    connect( angle, SIGNAL(valueChanged(int)),

             cannonField, SLOT(setAngle(int)) );

    connect( cannonField, SIGNAL(angleChanged(int)),

             angle, SLOT(setValue(int)) );


    QGridLayout *grid = new QGridLayout( this, 2, 2, 10 );

    //2x2, 10 pixel border


    grid->addWidget( quit, 0, 0 );

    grid->addWidget( angle, 1, 0, Qt::AlignTop );

    grid->addWidget( cannonField, 1, 1 );

    grid->setColStretch( 1, 10 );


    angle->setValue( 60 );

    angle->setFocus();

}



int main( int argc, char **argv )

{

    QApplication a( argc, argv );


    MyWidget w;

    w.setGeometry( 100, 100, 500, 355 );

    a.setMainWidget( &w );

    w.show();

    return a.exec();

}


Oben steht aber auch nochmal der Link von dem Tutorial, da kannst du zur not auch nachsehen, weil ich hab wirklich alles einfach nur 1 zu 1 rüberkopiert

Geschrieben

Ohje, peinlich peinlich, gut jetzt habe ich nochmal alles überprüft, aber das war ja nicht die einzige fehlermeldung, hab jetzt die anderen mal alle noch zusammengestellt:

testqt error LNK2001: unresolved external symbol "public: virtual bool __thiscall LCDRange::qt_property(int,int,class QVariant *)" (?qt_property@LCDRange@@UAE_NHHPAVQVariant@@@Z)

testqt error LNK2001: unresolved external symbol "public: virtual bool __thiscall LCDRange::qt_emit(int,struct QUObject *)" (?qt_emit@LCDRange@@UAE_NHPAUQUObject@@@Z)

testqt error LNK2001: unresolved external symbol "public: virtual bool __thiscall LCDRange::qt_invoke(int,struct QUObject *)" (?qt_invoke@LCDRange@@UAE_NHPAUQUObject@@@Z)

testqt error LNK2001: unresolved external symbol "public: virtual void * __thiscall LCDRange::qt_cast(char const *)" (?qt_cast@LCDRange@@UAEPAXPBD@Z)

testqt error LNK2001: unresolved external symbol "public: virtual char const * __thiscall LCDRange::className(void)const " (?className@LCDRange@@UBEPBDXZ)

testqt error LNK2019: unresolved external symbol "public: static class QMetaObject * __cdecl LCDRange::staticMetaObject(void)" (?staticMetaObject@LCDRange@@SAPAVQMetaObject@@XZ) referenced in function "public: virtual class QMetaObject * __thiscall LCDRange::metaObject(void)const " (?metaObject@LCDRange@@UBEPAVQMetaObject@@XZ)

testqt error LNK2001: unresolved external symbol "public: virtual bool __thiscall CannonField::qt_property(int,int,class QVariant *)" (?qt_property@CannonField@@UAE_NHHPAVQVariant@@@Z)

testqt error LNK2001: unresolved external symbol "public: virtual bool __thiscall CannonField::qt_emit(int,struct QUObject *)" (?qt_emit@CannonField@@UAE_NHPAUQUObject@@@Z)

testqt error LNK2001: unresolved external symbol "public: virtual bool __thiscall CannonField::qt_invoke(int,struct QUObject *)" (?qt_invoke@CannonField@@UAE_NHPAUQUObject@@@Z)

testqt error LNK2001: unresolved external symbol "public: virtual void * __thiscall CannonField::qt_cast(char const *)" (?qt_cast@CannonField@@UAEPAXPBD@Z)

testqt error LNK2001: unresolved external symbol "public: virtual char const * __thiscall CannonField::className(void)const " (?className@CannonField@@UBEPBDXZ)

testqt error LNK2019: unresolved external symbol "public: static class QMetaObject * __cdecl CannonField::staticMetaObject(void)" (?staticMetaObject@CannonField@@SAPAVQMetaObject@@XZ) referenced in function "public: virtual class QMetaObject * __thiscall CannonField::metaObject(void)const " (?metaObject@CannonField@@UBEPAVQMetaObject@@XZ)

testqt error LNK2019: unresolved external symbol "protected: void __thiscall CannonField::angleChanged(int)" (?angleChanged@CannonField@@IAEXH@Z) referenced in function "public: void __thiscall CannonField::setAngle(int)" (?setAngle@CannonField@@QAEXH@Z)

testqt fatal error LNK1120: 13 unresolved externals

jetzt guckste, was *g*

Geschrieben
@Goos:

Ich finde in dem Tutorial keine *.dsp-Datei, bist du dir sicher, dass bei diesem Tutorial eine/mehrere dabei sind?

Jo, in deinem %QTPath%\tutorial\t8 gibts ne t8.dsp :D

Goos

Geschrieben

testqt fatal error LNK1120: 13 unresolved externals

jetzt guckste, was *g*

Du musst deine Header-Files noch mocen :)

Deshalb waers auch einfacher, wenn du die dsp Files verwenden wuerdest, da is das schon dabei.

Ansonsten in den Settings deiner Header Files in etwa folgendes hinzufuegen:

$(QTDIR)\bin\moc cannon.h -o tmp\moc\release_mt_static\moc_cannon.cpp

Das erzeugt dir dann ein moc_cannon.cpp File welches du auch noch mit ins Projekt nehmen musst.

Ebenso ist mit lcdrange zu verfahren.

Goos

Geschrieben
Du musst deine Header-Files noch mocen :)

Was ist mocen? *g*

Deshalb waers auch einfacher, wenn du die dsp Files verwenden wuerdest, da is das schon dabei.

Wo find ich denn die dsp-Files, ich hatte schon geschaut, find aber nix... :(

:rolleyes:

Vielleicht kannst mir ja nen kleinen Tipp geben !?:hells:

Geschrieben
Was ist mocen? *g*

Ui, du bist ganz neu bei QT ;)

http://doc.trolltech.com/3.3/moc.html

Wo find ich denn die dsp-Files, ich hatte schon geschaut, find aber nix... :(

:rolleyes:

Vielleicht kannst mir ja nen kleinen Tipp geben !?:hells:

Die dsp-Files findest wie schon gesagt in deiner lokalen QT Installation im entsprechenden Tutorial Ordner. Kann allerdings auch sein, dass diese Files bei der freien Version nicht dabei sind.

Du solltest dir auf jeden Fall zuerstmal noch qmake anschaun.

http://doc.trolltech.com/3.3/qmake-manual.html

Goos

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...