我有一个编译问题,我无法在Visual Studio 2012的C++程序中解释。该错误出现在程序中的几个地方,这里是一个示例:在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 include,但是我仍然得到了错误,增加了“No target architecture”错误。
什么奇怪的是,这个代码的工作,当我用它在Visual Studio 2010中的一个项目在Windows 7
任何人都知道为什么发生这种情况?
感谢
请编辑您的问题以包含_complete_和_unedited_错误消息。还请指出错误在哪里提供的来源。 – 2013-03-16 15:23:00