Windows 8 — родные типы, критические секции и дескрипторы, не определенные в программе на c ++

У меня есть проблема компиляции, которую я просто не могу объяснить в программе на С ++ на Visual Studio 2012. Ошибка появляется в нескольких местах программы, вот пример:

#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.h include на эквивалент Windows 8 (synchapi.h), но затем все равно получаю сообщение об ошибке с добавлением ошибки «Нет целевой архитектуры».

Странно то, что этот код работает, когда я использовал его в проекте на Visual Studio 2010 для Windows 7.

Кто-нибудь знает, почему это происходит?

Спасибо

0

Решение

Если ваш проект является проектом приложения Магазина Windows, некоторые части Win32 API недоступны, по-видимому, включая CRITICAL_SECTION и связанные с ним. Вам придется использовать эквиваленты C ++ / CX, см .: http://msdn.microsoft.com/en-us/library/windows/apps/hh771042.aspx

0

Другие решения

Других решений пока нет …