linken?!



  • qtmain.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual bool __thiscall Schrift::qt_property(int,int,class QVariant *)" (?qt_property@Schrift@@UAE_NHHPAVQVariant@@@Z)
    qtmain.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual bool __thiscall Schrift::qt_emit(int,struct QUObject *)" (?qt_emit@Schrift@@UAE_NHPAUQUObject@@@Z)
    qtmain.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual bool __thiscall Schrift::qt_invoke(int,struct QUObject *)" (?qt_invoke@Schrift@@UAE_NHPAUQUObject@@@Z)
    qtmain.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual void * __thiscall Schrift::qt_cast(char const *)" (?qt_cast@Schrift@@UAEPAXPBD@Z)
    qtmain.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: virtual char const * __thiscall Schrift::className(void)const " (?className@Schrift@@UBEPBDXZ)

    diese fehlermeldungen kommen, wenn ich kompilieren will: ein qt programm in vc++ 6.0

    habe eine headerdatei, die ich einbinde

    jmd nen hint



  • einfach den linker richtig einstellen

    $(QTDIR)\lib\qt-mt230nc.lib $(QTDIR)\lib\qtmain.lib

    muss mit zu den linkereinstellungen.

    schau dir mal die beispiele an, die bei der installation von qt unter windows dabei sind 😉



  • Das ist ja drinne nur jetzt kommt aufeinmal

    LINK : warning LNK4044: Nicht erkannte Option "mteval305.lib"; ignoriert
    LINK : warning LNK4044: Nicht erkannte Option "mteval305.lib"; ignoriert
    LINK : fatal error LNK1104: Datei "main.lib" kann nicht geoeffnet werden

    wenn ich aber nen example öffne dann gehts?!



  • hi

    mir ist unklar, was du machst.
    habe mal experimentiert und verschiedene libs nacheinander rausgenommen, aber diesen fehler krieg ich nicht gefasst.

    ich würde ein projekt kopieren aus den beispielen, und dort nochmal dasselbe machen.

    achtung: die projekte beziehen sich aufeinander

    die qt_main... fehlermeldung ist auf jeden durch linken der zweiten lib weg.



  • du mir ists auch unklar 😛

    öffne ich ein vorgegebenes example, läuft alles einwadfrei.

    sobald ich jedoch nen eigenes projekt mache

    kommt dann nicht mehr die erste fehlermeldung, sondern die das er eben main.lib nicht öffnen kann????



  • einfachste methode:

    kopier die hello world

    pack den code raus und tu eigenen rein.

    wenn das dann nicht geht, poste den code 😉



  • also hab jetzt hello world mit eigenem code unbennant

    und es geht net, es kommen die selben fehler, wie die dich als erstes geposted hatte.

    hier der code

    #include <qapplication.h>
    #include <qlabel.h>
    #include <qpushbutton.h>
    #include <qslider.h>
    #include <qlcdnumber.h>
    
    class Schrift : public QLabel
    {
        Q_OBJECT
    
    public:
        Schrift(char const* text, QWidget *parent) : QLabel(text,parent)
        {
        }
    
    public slots:
        void stelle_neu_dar(int groesse)
        {
            setFont(QFont("Times",groesse));
            repaint();
        }
    
    };
    
    int main(int argc, char ** argv)
    {
        QApplication myapp(argc,argv);
    
        QWidget *MyWidget = new QWidget();
        MyWidget->setGeometry(400,300,200,200);
    
        //Schiebebalken
    
        QSlider *MySlider = new QSlider(0,
                                        99,
                                        1,//SChrittweite
                                        0,//Startwert
                                        QSlider::Horizontal,
                                        MyWidget);
    
        MySlider->setGeometry(10,10,180,30);
    
        //LCD
    
        QLCDNumber *MyLCDNum = new QLCDNumber(2,MyWidget);
        MyLCDNum->setGeometry(60,50,80,50);
        MyLCDNum->display(0);
    
        QObject::connect(MySlider,SIGNAL(valueChanged(int)),MyLCDNum,SLOT(display(int)));
    
        QPushButton *Decrement = new QPushButton("-",MyWidget);
        Decrement->setGeometry(10,110,50,30);
        Decrement->setPalette(QPalette(QColor(255,0,0),Qt::white));
    
        QPushButton *Increment = new QPushButton("+",MyWidget);
        Increment->setGeometry(140,110,50,30);
        Increment->setPalette(QPalette(QColor(0,255,0),Qt::white));
    
        QObject::connect(Decrement,SIGNAL(clicked()),MySlider,SLOT(subtractStep()));
        QObject::connect(Increment,SIGNAL(clicked()),MySlider,SLOT(addStep()));
    
        //Label
    
        Schrift *Anzeige = new Schrift("Slot 'stelle neu dar' ändert Textgröße!",MyWidget);
        Anzeige->setGeometry(200,10,250,130);
        Anzeige->setPalette(QPalette(Qt::white,Qt::white));
    
        QObject::connect(MySlider,SIGNAL(valueChanged(int)),Anzeige,SLOT(stelle_neu_dar(int)));
    
        QPushButton *buttonQuit = new QPushButton("Quit",MyWidget);
        buttonQuit->setGeometry(10,150,180,30);
        QObject::connect(buttonQuit,SIGNAL(clicked()),&myapp,SLOT(quit()));
    
        myapp.setMainWidget(MyWidget);
        MyWidget->show();
        return myapp.exec();
    }
    


  • oki

    der code funzt bis auf die auskommentierten stellen...

    da benutzt du irgendwas, was einen neuen header braucht..

    int main(int argc, char ** argv)
    {
        QApplication myapp(argc,argv);
    
        QWidget *MyWidget = new QWidget();
        MyWidget->setGeometry(400,300,200,200);
    
        //Schiebebalken
    
        QSlider *MySlider = new QSlider(0,
                                        99,
                                        1,//SChrittweite
                                        0,//Startwert
                                        QSlider::Horizontal,
                                        MyWidget);
    
        MySlider->setGeometry(10,10,180,30);
    
        //LCD
    
        QLCDNumber *MyLCDNum = new QLCDNumber(2,MyWidget);
        MyLCDNum->setGeometry(60,50,80,50);
        MyLCDNum->display(0);
    
        QObject::connect(MySlider,SIGNAL(valueChanged(int)),MyLCDNum,SLOT(display(int)));
    
        QPushButton *Decrement = new QPushButton("-",MyWidget);
        Decrement->setGeometry(10,110,50,30);
        Decrement->setPalette(QPalette(QColor(255,0,0),Qt::white));
    
        QPushButton *Increment = new QPushButton("+",MyWidget);
        Increment->setGeometry(140,110,50,30);
        Increment->setPalette(QPalette(QColor(0,255,0),Qt::white));
    
        QObject::connect(Decrement,SIGNAL(clicked()),MySlider,SLOT(subtractStep()));
        QObject::connect(Increment,SIGNAL(clicked()),MySlider,SLOT(addStep()));
    
        //Label
    
    /*    Schrift *Anzeige = new Schrift("Slot 'stelle neu dar' ändert Textgröße!",MyWidget); //!!!!!!problem. 
    
        Anzeige->setGeometry(200,10,250,130);
        Anzeige->setPalette(QPalette(Qt::white,Qt::white));
    
        QObject::connect(MySlider,SIGNAL(valueChanged(int)),Anzeige,SLOT(stelle_neu_dar(int)));
    
        QPushButton *buttonQuit = new QPushButton("Quit",MyWidget);
        buttonQuit->setGeometry(10,150,180,30);
        QObject::connect(buttonQuit,SIGNAL(clicked()),&myapp,SLOT(quit()));*/
    
        myapp.setMainWidget(MyWidget);
        MyWidget->show();
        return myapp.exec();
    }
    

    mal suchen, was dazu nötig ist,
    *wegeditiert, *g**

    [ Dieser Beitrag wurde am 14.03.2003 um 18:08 Uhr von elise editiert. ]



  • nimm in der klasse schrift das

    Q_OBJECT

    raus, dann gehts...

    nette applikation 😉



  • ich glaube gelesen zu haben, dass man das macro Q_OBJECT

    bei jeder abgeleiteten klasse benutzen MUSS.

    ich weiss ist ncihts weltbewegendes nur arbeite ich mich grade in QT ein 🙂

    p.s. komisch das es wirklich funzt 😞 ???



  • hmm naja aber eigentlich sollte man ja durch drücken auf + bzw + die schrift darin verändern das klappt aber net 😞


Anmelden zum Antworten