0
我在檢測Metro UI/Store應用程序,ARM應用程序和應包含的標題時遇到問題。Metro UI/Store應用程序,ARM和錯誤C3861:'Sleep':標識符未找到
我有對VOID
,LPVOID
,HANDLE
,LPHANDE
和一些基本的服務聲明像WaitForMultipleObjects
和Sleep
需要<windows.h>
源文件。
#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
# define MYLIB_WIN32_AVAILABLE
#endif
#if defined(MYLIB_WIN32_AVAILABLE)
# define WIN32_LEAN_AND_MEAN
# include <windows.h>
#endif
當我打開VS2012 ARM開發者提示並編譯源文件,它會導致:對於一個普通的桌面程序中的以下工作
cl.exe /nologo /D_MBCS /Zi /TP /EHsc /MT /DWINAPI_FAMILY=WINAPI_FAMILY_APP /c wait.cpp
wait.cpp
wait.cpp(140) : error C3861: 'Sleep': identifier not found
wait.cpp(145) : error C3861: 'PulseEvent': identifier not found
wait.cpp(149) : error C2039: 'WaitForMultipleObjects' : is not a member of '`global namespace''
...
按照Sleep
docs MSDN上,我需要包括用於Windows 8,Windows Server 2012和Windows Phone 8.1的<synchapi.h>
。所以我改變了包括塊以下基於Operating System Version從MSDN:
// Windows 8, Windows Server 2012, and Windows Phone 8.1 need <synchapi.h>
#if (WINVER >= _WIN32_WINNT_WIN8) || (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
#include <synchapi.h>
#endif
然後它編譯ARM下,但結果在Visual Studio 2012下破編譯在Windows 7:
1> wait.cpp
1> c:\users\...\wait.h(26): fatal error C1083: Cannot open include file: 'synchapi.h': No such file or directory
什麼時我做錯了,我該如何解決?