修复删除#includewindows.h和相对函数调用后的编译器错误

Fix Compiler Errors after Removing #include windows.h and Relative Functions Calls

本文关键字:函数调用 编译器 错误 相对 删除 #includewindows      更新时间:2023-10-16

我正在Windows 10上开发VS2017。我有一个带消息控制台应用程序的工作FSM,但它有几个Windows库(windows.hwinmm.lib)和一个非标准C++库(conio.h)。我想删除和/或替换这些库,以便能够将C++代码移植到OSX。我将根据需要删除和/或替换/调整任何当前功能。

然而,在继续之后,我得到了许多我无法解释的编译器错误。我搜索了很多小时,但找不到任何有用的参考资料,我需要一些帮助来弄清楚这些。

在我从一个特定的实用工具头文件(ConsoleUtils.h)中删除#include windows.h并删除它的一个使用windows.h的函数以及对该函数的所有调用之后,我得到了以下编译器错误:

  1. 在MessageDispatcher.cpp中:

类MessageDispatcher没有成员DispatchMessageW

好吧,MessageDispatcher有一个函数DispatchMessage()(末尾没有"W")。我真的对此感到困惑。如果我将鼠标指针悬停在MessageDispatcher::DispatchMessage定义中的红色卷曲线上,则弹出窗口显示

"#define DispatchMessage DispatchMessageW扩展到DispatchMessageW">

但是,我的代码中没有任何这样的#define!我甚至在整个解决方案中对"DispatchMessageW"进行了文本搜索,但没有该文本的实例。

  1. 在MessageDispatcher.cpp中:

此外,在DispatchMessage()函数内部,两个私有成员(Discharge()PriorityQ)是不可访问的,这两个成员都经过了正确的声明和定义,并且没有引用windows.h

  1. 在另外两个调用MessageDispatcher::DispatchMessage()的类中,我得到了与上面"1"中描述的相同的错误

如果我重新添加#include windows.h,所有错误都会消失,项目的构建和运行不会出现问题。

是什么导致了这些错误,我该怎么做才能修复它们?

在定义MessageDispatcher类之后和使用它之前的某个位置,某些内容包括<windows.h>或导致定义DispatchMessage宏的其他窗口标头。

相关文章: