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 識別子を見つけられないようです。インテリセンスもそうではありません。前述したように、このエラーはプログラムのいくつかの部分で発生し、CRITICAL_SECTION だけでなく、HANDLE や DWORD についても発生します。

windows.h インクルードを Windows 8 に相当するもの (synchapi.h) に置き換えようとしましたが、それでも「ターゲット アーキテクチャがありません」というエラーが追加されてエラーが発生します。

奇妙なのは、Windows 7 の Visual Studio 2010 のプロジェクトでこのコードを使用したときに、このコードが機能することです。

なぜこれが起こっているのか誰にも分かりますか?

ありがとう

4

1 に答える 1

0

プロジェクトが Windows ストア アプリ プロジェクトである場合、明らかに CRITICAL_SECTION および関連するものを含む、Win32 API の一部が利用できません。C++/CX に相当するものを使用する必要があります。次を参照してください: http://msdn.microsoft.com/en-us/library/windows/apps/hh771042.aspx

于 2013-03-16T15:57:41.187 に答える