Winapi 为什么msvc++;

Winapi 为什么msvc++;,winapi,visual-c++,windows-services,undefined,Winapi,Visual C++,Windows Services,Undefined,我最近没有在MSVC中编写代码。我被分配了一个有很多错误的旧代码,但是大多数缺少的定义都是WindowsAPI 例如,LPHANDLER\u FUNCTION\u EX未定义,导致C2061编译错误。但是我已经包括了Winsvc.h或Windows.h。我知道这只是一个定义,我检查了我的C:\Program Files\MicrosoftSDK\以在Winsvc.h上找到该定义。因此,我在目录列表中添加了SDK(工具>选项>目录选项卡) 我还下载了WindowsSDK 2003年2月更新,这是m

我最近没有在MSVC中编写代码。我被分配了一个有很多错误的旧代码,但是大多数缺少的定义都是WindowsAPI

例如,
LPHANDLER\u FUNCTION\u EX
未定义,导致C2061编译错误。但是我已经包括了
Winsvc.h
Windows.
h。我知道这只是一个定义,我检查了我的C:\Program Files\MicrosoftSDK\以在
Winsvc.h
上找到该定义。因此,我在目录列表中添加了SDK(工具>选项>目录选项卡)

我还下载了WindowsSDK 2003年2月更新,这是msvc6的最新版本。()

为了完整起见,我的电脑是Windows XP SP3。微软Visual C++企业版,安装SP6。我还安装了Windows SDK 2003年2月更新


有什么想法吗?

我通过“工具”>“选项”>“目录”选项卡修正了包含目录的顺序,从而解决了这个问题

在VC98文件夹位于SDK顶部之前。 第一个C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE 第二个C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE 第三个C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE 第四个C:\Program Files\Microsoft SDK\include

只需将SDK目录放在列表的顶部,它就可以工作了

使用/E选项的建议很有帮助。我还在项目设置>库选项卡>项目选项文本框中设置/E选项。日志将放在项目文件夹中的.plg文件中


这也适用于丢失的lib文件。将目录设置为库的SDK目录。

在使用
LPHANDLER\u函数\u EX
之前,是否确实包含
WinSvc.h
?我建议检查预处理器的输出(
cl.exe/E file.c>output
)。@jamesdlin。在使用LPHANDLER_函数_EX定义之前,WinSvc.h包含在头的顶部。很难回答。它对我有用。WINVER的定义是什么?您可能正在使用预编译头吗?再次查看预处理的输出,并验证在使用前声明了
LPHANDLER\u FUNCTION\u EX