• 5910阅读
  • 8回复

定义线程的问题 急! 谢谢 [复制链接]

上一主题 下一主题
离线ediml
 

只看楼主 倒序阅读 楼主  发表于: 2006-05-31
我定义了一个class
class myThread : public Qthread{
public:
virtual void run();
};
void myThread::run(){
int cnt=1;
while(1){
pcap_dispatch(p_handler,   //libpcap 句柄
    cnt,     //要抓取的数据包的个数
    ethernet_protocol_packet_callback, //回调函数
    NULL);   //传给回调函数的参数

}
}
定义了以后我直接在Object Explorer的 Class Variables里加的 myThread pcap_thread
编译的时候:
.ui/mainform.h:52: 'myThread' is used as a type, but is not defined as a type.
In file included from mythread.h:2,   (我已经在mainform.ui.h头文件中加了#inculde "mythread.h")
............
mythread.h: At global scope:
mythread.h:5: parse error before `{' token
mythread.h:9: invalid use of undefined type `class myThread'
mythread.h:5: forward declaration of `class myThread'
是不是我定义class的格式有问题呢?
[ 此贴被XChinux在2006-05-31 19:01重新编辑 ]
离线shiroki

只看该作者 1楼 发表于: 2006-05-31
QThread的头文件include了吗? 还是文件贴得不全阿
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线ediml

只看该作者 2楼 发表于: 2006-05-31
头文件加了
#include <qthread.h>
#include "pcap.h"
#include "analyse.h"
//mythread.h
class myThread : public QThread {
  // Q_OBJECT
  public:
  virtual void run();
  void myThread::run(){
   int cnt=1;
   while(1){
      pcap_dispatch(p_handler,        //libpcap 句柄
            cnt,       //要抓取的数据包的个数
            ethernet_protocol_packet_callback, //回调函数
            NULL);        //传给回调函数的参数
      //sleep(1000);
   }
  }
};

#include "aboutme.h"
#include "cap_pkt.h"
#include <qstring.h>
#include <qmessagebox.h>
#include "analyse.h"
#include <qtable.h>
#include "config_filter.h"
#include "mythread.h"
void mainForm::capture_pkt()
{
 
  v=result;     //v指向输出包信息的表
  myThread pcap_thread;
  Init_pcap();
  //判断数据链路曾的类型,如果不是以太网类型,则退出
  if(pcap_datalink(p_handler)!=DLT_EN10MB){
   QMessageBox::information(this,"error","For ethernet only!.");
   pcap_close(p_handler);
   p_handler = NULL;
   return;
  }
 
  pcap_thread.start();
   
}

代码大概就是这样的.没用到的我删掉了
离线ediml

只看该作者 3楼 发表于: 2006-06-01
离线shiroki

只看该作者 4楼 发表于: 2006-06-01
恩,很可能你的qt编译的时候没有把多线程configure进去吧?
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线ediml

只看该作者 5楼 发表于: 2006-06-01
怎么把多线程configure进去呢
光加头文件#include <qthread.h> 不行吗
离线cocalele
只看该作者 6楼 发表于: 2006-06-01
你是嵌入式开发吗?Qt是你自己编译出来的吗?如果是,应该有一步configure的过程。用configure --help里面会列出来所有的选项,包括怎样支持多线程。
离线ediml

只看该作者 7楼 发表于: 2006-06-02
不是嵌入式开发
QT designer是系统自带的
离线ediml

只看该作者 8楼 发表于: 2006-06-02
[root@localhost qt-3.1]# configure --help
bash: configure: command not found
快速回复
限100 字节
 
上一个 下一个