0

我有一个编译问题,我无法在 Visual Studio 2012 上的 c++ 程序中解释。错误出现在程序的几个地方,这里是一个例子:

#ifndef     __WINMUTEX_H__
# define    __WINMUTEX_H__
# ifdef _WIN32
# include   <windows.h>

namespace Thread
{
class       WinMutex
{
public:
    WinMutex();
    ~WinMutex();
    void    lock();
    void    unlock();
    bool    trylock();
private:
    CRITICAL_SECTION    _mutex;
};

typedef WinMutex Mutex;
}
# endif
#endif

编译器给了我一个错误(C2146)。基本上编译器似乎没有找到 CRITICAL_SECTION 标识符,Intellisense 也没有。正如我所说,此错误发生在程序的几个部分中,不仅针对 CRITICAL_SECTION,还针对 HANDLE 甚至 DWORD。

我尝试用 Windows 8 等效项 (synchapi.h) 替换 windows.h 包含,但添加“无目标体系结构”错误后我仍然收到错误。

奇怪的是,当我在 Windows 7 上的 Visual Studio 2010 项目中使用该代码时,它可以工作。

任何人都知道为什么会这样?

谢谢

4

1 回答 1

0

如果您的项目是 Windows 应用商店应用项目,则 Win32 API 的某些部分不可用,显然包括 CRITICAL_SECTION 和相关。您必须使用 C++/CX 等价物,请参阅:http: //msdn.microsoft.com/en-us/library/windows/apps/hh771042.aspx

于 2013-03-16T15:57:41.187 回答