WIN API GetFileSizeEx() 函数未在此范围内声明
WIN API GetFileSizeEx() function, was not declared in this scope
在我的 c++ class 中,我想使用 WIN API GetFileSizeEx() 函数。当我编译我的代码时,编译器说:
"error: 'GetFileSizeEx' was not declared in this scope".
但是,CreateFile() 或 WriteFile() 等其他函数可以完美运行。
在我的 class header 中,我声明:
#if defined(WINVER) && WINVER==0x0602 /* windows 8 */
#define WINVER 0x0602
#define _WIN32_WINNT 0x0602
#elif defined(WINVER) && WINVER==0x0601 /* windows 7 */
#define WINVER 0x0601
#define _WIN32_WINNT 0x0601
#elif defined(WINVER) && WINVER==0x0600 /* windows vista and server 2008 */
#define WINVER 0x0600
#define _WIN32_WINNT 0x0600
#elif defined(WINVER) && WINVER==0x0502 /* server 2003 */
#define WINVER 0x0502
#define _WIN32_WINNT 0x0502
#elif defined(WINVER) && WINVER==0x0501 /* windows xp */
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#endif
#include <windows.h>
#include <winbase.h>
#include <string>
在我的.cpp中class:
Test::Test()
{
hFile = CreateFile(TEXT("conf/configure_tool.txt"),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
canAcces = false;
}else
{
if(GetFileSizeEx(hFile,&sized) != 0)
{
canAcces = true;
}
}
}
你有解决我问题的想法吗?
Minimum supported client Windows XP [desktop apps only]
因此您需要确保已将 WINVER
定义为 0x0501
或更大。
如果这不能解决问题,则可能的原因是您使用的 SDK 有缺陷。也许来自旧版本的非 MS 编译器。确保您拥有最新的 SDK。
必须要说的是,问题中试图定义 _WIN32_WINNT
的条件代码有点奇怪。为什么不在定义WINVER
的同时定义_WIN32_WINNT
?
在我的 c++ class 中,我想使用 WIN API GetFileSizeEx() 函数。当我编译我的代码时,编译器说:
"error: 'GetFileSizeEx' was not declared in this scope".
但是,CreateFile() 或 WriteFile() 等其他函数可以完美运行。
在我的 class header 中,我声明:
#if defined(WINVER) && WINVER==0x0602 /* windows 8 */
#define WINVER 0x0602
#define _WIN32_WINNT 0x0602
#elif defined(WINVER) && WINVER==0x0601 /* windows 7 */
#define WINVER 0x0601
#define _WIN32_WINNT 0x0601
#elif defined(WINVER) && WINVER==0x0600 /* windows vista and server 2008 */
#define WINVER 0x0600
#define _WIN32_WINNT 0x0600
#elif defined(WINVER) && WINVER==0x0502 /* server 2003 */
#define WINVER 0x0502
#define _WIN32_WINNT 0x0502
#elif defined(WINVER) && WINVER==0x0501 /* windows xp */
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#endif
#include <windows.h>
#include <winbase.h>
#include <string>
在我的.cpp中class:
Test::Test()
{
hFile = CreateFile(TEXT("conf/configure_tool.txt"),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
canAcces = false;
}else
{
if(GetFileSizeEx(hFile,&sized) != 0)
{
canAcces = true;
}
}
}
你有解决我问题的想法吗?
Minimum supported client Windows XP [desktop apps only]
因此您需要确保已将 WINVER
定义为 0x0501
或更大。
如果这不能解决问题,则可能的原因是您使用的 SDK 有缺陷。也许来自旧版本的非 MS 编译器。确保您拥有最新的 SDK。
必须要说的是,问题中试图定义 _WIN32_WINNT
的条件代码有点奇怪。为什么不在定义WINVER
的同时定义_WIN32_WINNT
?