【问题标题】:Why are windows definitions missing on msvc++为什么 msvc++ 上缺少 windows 定义
【发布时间】:2012-01-30 11:38:26
【问题描述】:

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

例如,LPHANDLER_FUNCTION_EX 未定义并导致 C2061 编译错误。但我已经包含了Winsvc.hWindows.h。我知道这只是一个定义,我检查了我的 C:\Program Files\Microsoft SDK\ 的定义可以在 Winsvc.h 上找到。所以我在目录列表中添加了 SDK(工具 > 选项 > 目录选项卡)。

我还下载了 Windows SDK 2003 年 2 月更新,它是最后一个支持 msvc6 的版本。 (ref)

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

有什么想法吗?

【问题讨论】:

  • 您确定在使用LPHANDLER_FUNCTION_EX 之前包含WinSvc.h 吗?我建议检查预处理器的输出 (cl.exe /E file.c > output)。
  • @jamesdlin。在使用 LPHANDLER_FUNCTION_EX 定义之前,WinSvc.h 包含在头文件的顶部。
  • 几乎不可能回答。这个对我有用。 WINVER 的定义是什么?
  • 您是否使用了预编译头文件?同样,查看预处理的输出并验证 LPHANDLER_FUNCTION_EX 在使用之前已声明。

标签: winapi visual-c++ windows-services undefined


【解决方案1】:

我可以通过工具 > 选项 > 目录选项卡修复包含目录的顺序来解决这个问题。

在 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 第 4 个 C:\Program Files\Microsoft SDK\include

只需将 SDK 目录放在列表顶部即可。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    相关资源
    最近更新 更多