Xbox 360控制器API不配合

Xbox 360 Controller API Not Cooperating

本文关键字:不配合 API 控制器 Xbox      更新时间:2023-10-16

我正在尝试通过http://msdn.microsoft.com/en-us/library/windows/desktop/ee417001%28v=vs.85%29.aspx上的XInput教程。然而,示例中的代码甚至无法执行,因为在其他错误中,它一直说"没有目标体系结构"。我在互联网上找遍了,仍然不知道如何定义我的建筑。我现在要做的就是让程序告诉我控制器是否连接。下面是我到目前为止的代码:

#include <Xinput.h>
#include <Windows.h>
void main(){
    DWORD dwResult;
    // Retrieve the state of the controller
    for (DWORD i = 0; i < XUSER_MAX_COUNT; i++)
    {
        XINPUT_STATE state;
        ZeroMemory(&state, sizeof(XINPUT_STATE));
        // Simply get the state of the controller from XInput.
        dwResult = XInputGetState(i, &state);
        if (dwResult == ERROR_SUCCESS){
            // Controller is connected
        }
        else
        {
            // Controller is not connected
        }
    }
}

我正在运行Windows 7 Professional 64位,使用Visual Studio Professional 2013。以下是我的错误(项目路径删除空间):

1   error C1189: #error :  "No Target Architecture" c:program files (x86)windows kits8.1includeumwinnt.h  145 1
2   IntelliSense: #error directive: "No Target Architecture"    c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  145 2
3   IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  16918   11
4   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  17529   11
5   IntelliSense: identifier "SLIST_HEADER" is undefined    c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  17537   16
6   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  17544   13
7   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  17551   13
8   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  17559   13
9   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  17569   13
10  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeumwinnt.h  17576   10
11  IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1Includeumminwinbase.h 358 9
12  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeuminterlockedapi.h 51  11
13  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeuminterlockedapi.h 59  13
14  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeuminterlockedapi.h 67  13
15  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeuminterlockedapi.h 81  13
16  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeuminterlockedapi.h 94  13
17  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:Program Files (x86)Windows Kits8.1Includeuminterlockedapi.h 102 10
18  IntelliSense: identifier "CONTEXT" is undefined c:Program Files (x86)Windows Kits8.1Includeumprocessthreadsapi.h  762 16
19  IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1IncludeumWinBase.h    1279    14
20  IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1IncludeumWinBase.h    8619    13
21  IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1IncludeumWinBase.h    8621    10
22  IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1IncludeumWinBase.h    8637    11
23  IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1IncludeumWinBase.h    8660    10
24  IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1IncludeumWinBase.h    8669    10
25  IntelliSense: identifier "PCONTEXT" is undefined    c:Program Files (x86)Windows Kits8.1IncludeumWinBase.h    8685    13

此外,我还包含了第一个错误的代码。第145行是说"无目标体系结构"的那行。在"#error"下面有一条红线。

#if defined(_AMD64_) || defined(_X86_)
#define PROBE_ALIGNMENT( _s ) TYPE_ALIGNMENT( DWORD )
#elif defined(_IA64_) || defined(_ARM_)
#define PROBE_ALIGNMENT( _s ) (TYPE_ALIGNMENT( _s ) > TYPE_ALIGNMENT( DWORD ) ? 
                              TYPE_ALIGNMENT( _s ) : TYPE_ALIGNMENT( DWORD ))
#elif !defined(RC_INVOKED)
#error "No Target Architecture"
#endif

提前感谢您的帮助。我和其他几个人都遇到了这个问题,所以任何帮助都会很感激。

如果我理解正确的话,您需要定义程序将运行的平台的体系结构。例如,把#define _AMD64_放在include之前。

如果没有帮助,也许你需要添加一些库到你的编译器依赖…这解决了我的问题。

IIRC将#include<windows.h>放在#include<Xinput.h>前面可能也有帮助。