c++ - “INPUT”未在此范围内声明

标签 c++ winapi

我正在尝试编译我几年前编写的一个模拟鼠标点击和击键的程序。我已将其简化为这个最小的示例:

#include "Windows.h"

int main(){
    INPUT foo;
    return 0;
}

它给我这个错误:

C:\projects\clicker>g++ minimaltest.cpp
minimaltest.cpp: In function 'int main()':
minimaltest.cpp:4:2: error: 'INPUT' was not declared in this scope
minimaltest.cpp:4:8: error: expected ';' before 'foo'

MSDN 页面 INPUT说是在Windows.h中定义的,不知道为什么不识别类型。

另一个stackoverflow用户有类似的问题here ,但他们的解决方案,添加 #define _WIN32_WINNT 0x0500,并没有修复错误。

几年前我就能够在 Windows XP 上构建程序。难道 INPUT 不能像在 XP 上那样在 Windows 7 上工作吗?或者我可能忘了向编译器提供标志?

最佳答案

您放错了 #define#include之后.结果是 windows.h看到 _WIN32_WINNT因为未定义,所以 INPUT未声明。然后你在INPUT之后定义它存在的机会已经过去。

#define _WIN32_WINNT 0x0500 //RIGHT
#include "Windows.h"
#define _WIN32_WINNT 0x0500 //WRONG

int main(){
    INPUT foo;
    return 0;
}

作为旁注,除非windows.h与源文件位于同一目录中,通常应使用 #include <> 导入而不是 #include "" .

关于c++ - “INPUT”未在此范围内声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596219/

相关文章:

c++ - WinINet API 可以在 Windows Server 操作系统上使用吗?

C#:将 DllImport 与继承相结合?

java - SendMessage 从 Delphi 应用程序到 Java 应用程序 RICHEDIT50W 控件

c++ - win32 api 中 _tprintf 的替代 C++ 函数是什么?

c++ - 为什么编译器输出以下错误代码 : C2143, C2238、C2501

delphi - GUID 类型是什么?

c++ - ffmpeg AVFrame 到 opencv Mat 转换

c++ - 如何使用Qt在windows窗体中显示桌面?

c++ - 视频太快 FFmpeg

C++空字符数组的长度> 0