首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C++ XInput编译g++

使用C++ XInput编译g++
EN

Stack Overflow用户
提问于 2016-03-19 17:42:15
回答 1查看 1.5K关注 0票数 0
代码语言:javascript
复制
#include <Windows.h>
#include <XInput.h>

#include <iostream>

using namespace std;

struct Controller{
    XINPUT_STATE state;
};

class Joypad
{
public:
    int getJoystickPort()
    {
        DWORD dwResult;

        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)
            {
                return((int) i);
                cout << "Joystick Port: " << i << " is connnected." << endl;
                cout << "Button " << (((int)state.Gamepad.wButtons == XINPUT_GAMEPAD_A)) << " pressed." << endl;
                cout << "LX:  " << state.Gamepad.sThumbLX << " LY: " << state.Gamepad.sThumbLY << endl;
                cout << "RX:  " << state.Gamepad.sThumbRX << " RY: " << state.Gamepad.sThumbRY << endl;
            }
            else
            {
                cout << "Joystick at Port: " << i << " is disconnected." << endl;
            }
        }
        return -1;
    }
};



void joystickStates(){
    Joypad* joypad = new Joypad;
    while (true){
        system("cls");      
        joypad->getJoystickPort();
        Sleep(1000);
    }
}

int main(){
    joystickStates();
    return 0;
}

im not __in & __out 's没有在此范围内声明错误。

我使用了下面的语法g++ Joypad.cpp -IC:\DirectSDK\Include -LC:\DirectSDK\Lib\x86 -lXinput -o Joypad

我还试用了g++ Joypad.cpp -IC:\Windows SDK~um、shared等-LC:\Windows SDK\Lib -lXInput -o Joypad

我错过了什么吗?我使用mingw x86_64

目录包括: Windows 8.1 (嗯,共享,winrt) Microsoft DirectX SDK 图书馆包括: XInput.lib - C:\Progra~2\Micros~4\Lib\x86

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-19 19:40:36

__in__out是微软特有的销售注释。它们被MS Visual C++编译器理解,而不是GCC编译器理解的。

“删除”它们的一种方法是让自己成为一个头文件,比如no_sal.h,并且每次GCC在SAL注释__foo上编译barfs时,添加:

代码语言:javascript
复制
#define __foo

no_sal.h。然后,通过传递no_sal.h选项-include /path/to/no_sal.h,确保在每个编译中首先包含-include /path/to/no_sal.h

然而,我不认为这将结束您的问题,试图编译像GCC的DirectX SDK这样的非常“深层次的微软”代码。如果您不想使用Visual,那么请考虑将Windows发行版从MinGW (我猜)切换到GCC 64位,后者将DirectX头和库绑定到GCC。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36104992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档