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 識別子を見つけられないようです。インテリセンスもそうではありません。前述したように、このエラーはプログラムのいくつかの部分で発生し、CRITICAL_SECTION だけでなく、HANDLE や DWORD についても発生します。
windows.h インクルードを Windows 8 に相当するもの (synchapi.h) に置き換えようとしましたが、それでも「ターゲット アーキテクチャがありません」というエラーが追加されてエラーが発生します。
奇妙なのは、Windows 7 の Visual Studio 2010 のプロジェクトでこのコードを使用したときに、このコードが機能することです。
なぜこれが起こっているのか誰にも分かりますか?
ありがとう