• 6173阅读
  • 6回复

书上源程序关于线程方面的为什么make不过去,请大侠指点 [复制链接]

上一主题 下一主题
离线clinton
 
只看楼主 倒序阅读 楼主  发表于: 2007-03-19
— 本帖被 XChinux 执行加亮操作(2008-07-19) —
#include <qapplication.h>
#include <qpushbutton.h>
#include <qthread.h>
    QWaitCondition mycond;
    class Worker : public QPushButton, public QThread
    {
        Q_OBJECT

    public:
        Worker(QWidget *parent = 0, const char *name = 0) : QPushButton(parent, name)
        {
            setText("Start Working");

            connect(this, SIGNAL(clicked()), SLOT(slotClicked()));

            QThread::start();
        }

    public slots:
        void slotClicked()
        {
            mycond.wakeOne();
        }

    protected:
        void run()
        {
            while ( TRUE ) {
                qApp->lock();
                setCaption( "Waiting" );
                qApp->unlock();

                mycond.wait();

                qApp->lock();
                setCaption( "Working!" );
                qApp->unlock();

  //              do_complicated_thing();
            }
        }
    };

    int main( int argc, char **argv )
    {
        QApplication app( argc, argv );

     Worker firstworker( 0, "worker" );

        app.setMainWidget( &firstworker );
      firstworker.show();

        return app.exec();
    }


g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables  -DQT_NO_DEBUG -DQT_SHARED -DQT_THREAD_SUPPORT -I/usr/lib/qt-3.3/mkspecs/default -I. -I/usr/lib/qt-3.3/include -I.ui/ -I.moc/ -o .obj/qtthread.o qtthread.cpp
g++  -o qtthread .obj/qtthread.o    -L/usr/lib/qt-3.3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm
.obj/qtthread.o: In function `Worker':/test/qtthread/qtthread.cpp:86:对‘vtable for Worker’未定义的引用
:/test/qtthread/qtthread.cpp:86:对‘vtable for Worker’未定义的引用
:/test/qtthread/qtthread.cpp:86:对‘vtable for Worker’未定义的引用
.obj/qtthread.o: In function `~Worker':/test/qtthread/qtthread.cpp:82:对‘vtable for Worker’未定义的引用
:/test/qtthread/qtthread.cpp:82:对‘vtable for Worker’未定义的引用
.obj/qtthread.o:/test/qtthread/qtthread.cpp:82: more undefined references to `vtable for Worker' follow
collect2: ld 返回 1
make: *** [qtthread] 错误 1
[ 此贴被XChinux在2008-07-19 20:11重新编辑 ]
离线htyoung

只看该作者 1楼 发表于: 2007-03-20
将 Q_OBJECT 去掉再试试,我手头没有QT3。

如果是刚开始新Qt项目的话,我建议用Qt4
因为,相比较qt3 ,qt4 有很大的不同。
***
QT5
***
离线sars_laopo
只看该作者 2楼 发表于: 2007-03-21
你看看你安装的时候加没加-thread的参数如果没有的话
那么这个qt就不支持thread
离线pzf9266

只看该作者 3楼 发表于: 2007-03-21
添加个宏定义 #define QT_THREAD_SUPPORT
离线wqwmcu

只看该作者 4楼 发表于: 2007-05-11
分成两个文件 cpp和 h 即可
离线keisuo

只看该作者 5楼 发表于: 2007-05-11
我用过,你在
Makefile 里面加上一个 -DQT_THREAD_SUPPORT
就OK 了,
我也是刚学,希望多交流.
我的最新贴子:
  显示图片;可视通讯系统;
希望可以交流
离线蛮蛮
只看该作者 6楼 发表于: 2007-05-12
connect(this, SIGNAL(clicked()), SLOT(slotClicked()));
蛮蛮工作室
快速回复
限100 字节
 
上一个 下一个