2013-03-16 21 views
0

我有一个编译问题,我无法在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

任何人都知道为什么发生这种情况?

感谢

+0

请编辑您的问题以包含_complete_和_unedited_错误消息。还请指出错误在哪里提供的来源。 – 2013-03-16 15:23:00

回答

相关问题