作者:宋雨甄_938 | 来源:互联网 | 2022-12-25 18:30
它提示:
1>sqlite3.c(31037): error C4996: 'GetVersionExA': 被声明为已否决
1> C:\Program Files (x86)\Windows Kits\8.1\Include\um\sysinfoapi.h(433) : 参见“GetVersionExA”的声明
找到了错误的地方为
#define osCreateFileMappingFromApp ((HANDLE(WINAPI*)(HANDLE, \
LPSECURITY_ATTRIBUTES,ULONG,ULONG64,LPCWSTR))aSyscall[73].pCurrent)
}; /* End of the overrideable system calls */
大神求解,要是这次还没人。。就再不来csdn问了。。
5 个解决方案
GetVersionExA 这个方法的参数不对?你可以看看GetVersionExA这个函数的原型是什么
// 这是GetVersionExA(W)函数的声名:
NOT_BUILD_WINDOWS_DEPRECATE
WINBASEAPI
__drv_preferredFunction("IsWindows*", "Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers.")
BOOL
WINAPI
GetVersionExA(
_Inout_ LPOSVERSIONINFOA lpVersionInformation
);
#define NOT_BUILD_WINDOWS_DEPRECATE __declspec(deprecated)
#define __drv_preferredFunction(func,why) \
_SAL_L_Source_(__drv_preferredFunction, (func,why), _Pre_ _SA_annotes2(SAL_preferredFunction, func, why))
#define _SA_annotes2(n,pp1,pp2) __declspec(#n "(" _SA_SPECSTRIZE(pp1) "," _SA_SPECSTRIZE(pp2) ")")
NOT_BUILD_WINDOWS_DEPRECATE
WINBASEAPI
__drv_preferredFunction("IsWindows*", "Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers.")
BOOL
WINAPI
GetVersionExA(
_Inout_ LPOSVERSIONINFOA lpVersionInformation
);
#define NOT_BUILD_WINDOWS_DEPRECATE __declspec(deprecated)
#define __drv_preferredFunction(func,why) \
_SAL_L_Source_(__drv_preferredFunction, (func,why), _Pre_ _SA_annotes2(SAL_preferredFunction, func, why))
#define _SA_annotes2(n,pp1,pp2) __declspec(#n "(" _SA_SPECSTRIZE(pp1) "," _SA_SPECSTRIZE(pp2) ")")
其NOT_BUILD_WINDOWS_DEPRECATE和__drv_preferredFunction宏展开后大至如下:
__declspec(deprecated( "IsWindows*, Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers."))
表示这个函数在vs2010后的版本里已被声名为弃用了。如果仍然要用,只能换低版本的VS编译,或者改用别的相同功能的函数;
VS的高版本一般都可以直接在工程配置里设置平台工具集,可以直接用低版本的VS编译;但前提是安装了多个不同版本的VS。
关于__declspec(deprecated())去MSDN看吧;