为什么QMutex未知?

时间:2010-01-20 12:43:23

标签: c++ qt mutex

我已经包含了QMutex标头并使用它,如下所示。但是我收到以下错误:

  

错误C2146:语法错误:缺失> ';'在标识符之前> '_RecorderParamsMutex'

     

错误C4430:缺少类型说明符    - 假设为int。 >注意:C ++不支持default-int

     

错误C4430:缺少类型说明符 - > int假设。注意:C ++没有>支持default-int

#ifndef RECORDERinterface_h
    #define RECORDERinterface_h
    #include "qstring.h"
    #include "ccc.h"
    #include "ddd.h"
    #include <qmutex.h>
    #include "eee.h"

using namespace Common; //for aaaaa

class RecorderInterface{
    //the implemented recorders are my friends, the may access all my private stuff :)
    friend class A;
    friend class B;

public:
    RecorderInterface();     
    bool            setParam(RecorderPrintParam *up);


private:
    QMutex          _RecorderParamsMutex;
};

#endif

3 个答案:

答案 0 :(得分:3)

查看header file,类声明由#ifdef包装。试试这样:

#define QT_THREAD_SUPPORT
#include <qmutex.h>

这可能应该是项目级别的#define,因此也可以使用其他线程定义。

答案 1 :(得分:2)

您使用的是哪个版本的Qt?从标题样式看起来像Qt3

“Qt的早期版本提供了在没有线程支持的情况下构建库的选项。从Qt 4.0起,线程始终处于启用状态。” [source]

您确定在库中内置了线程支持吗?

答案 2 :(得分:0)

缺少名称空间? 我不熟悉QMutex,但如果它附带了一些库,则应该使用库的命名空间来定义它。除非它是“共同的”。