2

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

#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 用户在这里遇到了类似的问题,但他们的解决方案添加#define _WIN32_WINNT 0x0500,并没有修复错误。

几年前,我能够在 Windows XP 上构建该程序。会不会是 INPUT 在 Windows 7 上不像在 XP 上那样工作?或者也许我忘了向编译器提供一个标志?

4

1 回答 1

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 "".

于 2012-07-21T22:25:03.123 回答