c++ - Xbox 360 Controller API 不合作

标签 c++ architecture visual-studio-2013 xbox360 xinput

我正在尝试通过 http://msdn.microsoft.com/en-us/library/windows/desktop/ee417001%28v=vs.85%29.aspx 上的 XInput 教程.但是,示例中的代码甚至不会执行,因为它一直在提示“No Target Architecture”等错误。我在整个互联网上都看过了,但仍然不知道如何定义我的架构。我现在要做的就是让程序告诉我是否连接了 Controller 。这是我到目前为止的代码:

#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 kits\8.1\include\um\winnt.h  145 1
2   IntelliSense: #error directive: "No Target Architecture"    c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  145 2
3   IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  16918   11
4   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  17529   11
5   IntelliSense: identifier "SLIST_HEADER" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  17537   16
6   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  17544   13
7   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  17551   13
8   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  17559   13
9   IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  17569   13
10  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\winnt.h  17576   10
11  IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\minwinbase.h 358 9
12  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\interlockedapi.h 51  11
13  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\interlockedapi.h 59  13
14  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\interlockedapi.h 67  13
15  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\interlockedapi.h 81  13
16  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\interlockedapi.h 94  13
17  IntelliSense: identifier "PSLIST_HEADER" is undefined   c:\Program Files (x86)\Windows Kits\8.1\Include\um\interlockedapi.h 102 10
18  IntelliSense: identifier "CONTEXT" is undefined c:\Program Files (x86)\Windows Kits\8.1\Include\um\processthreadsapi.h  762 16
19  IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\WinBase.h    1279    14
20  IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\WinBase.h    8619    13
21  IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\WinBase.h    8621    10
22  IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\WinBase.h    8637    11
23  IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\WinBase.h    8660    10
24  IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\WinBase.h    8669    10
25  IntelliSense: identifier "PCONTEXT" is undefined    c:\Program Files (x86)\Windows Kits\8.1\Include\um\WinBase.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_

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

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

关于c++ - Xbox 360 Controller API 不合作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22719600/

相关文章:

c++ - 在 Phoenix 中调整成员函数的问题

terminology - 任何一段代码正在做的12件事

c++ - 如何在没有 lib 文件的情况下将 dll 引用到 Visual Studio

c++ - 传递对模板函数调用运算符重载的引用

c++ - 组合可选宏以形成列表

c++ - Qt5 Designer Ui 文件中的 QSystemTrayIcon

c++ - 如何将库路径添加到编译器

c# - 向 3rd 方开发人员公开我的核心 API 的关键类/方法的最佳方式是什么?

ios - 正确的客户端-服务器框架架构方法(不同服务器版本)

c# - 将远程服务器路径与文件路径组合时 Path.Combine 不起作用