Windows — C ++ XInput Компиляция с использованием g ++

#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;
}

я получаю __in & __out не было объявлено в этой области ошибок.

Я использовал следующий синтаксис g ++ Joypad.cpp -IC: \ DirectSDK \ Include -LC: \ DirectSDK \ Lib \ x86 -lXinput -o Joypad

и я тоже пытался
g ++ Joypad.cpp -IC: \ Windows SDK ~, общий доступ и т.д. -LC: \ Windows SDK \ Lib -lXInput -o Joypad

Я что-то пропустил? Я использую mingw x86_64

Каталоги включены:
Windows Kits 8.1 (ит, общий, winrt)
Microsoft DirectX SDK

Включенные библиотеки: XInput.lib — C: \ Progra ~ 2 \ Micros ~ 4 \ Lib \ x86

0

Решение

__in а также __out специфичны для Microsoft SAL
аннотаций. Они понимаются компилятором MS Visual Studio C ++, но не компилятором GCC.

Способ «удалить» их можно сделать из файла заголовка, скажем, no_sal.h а также
каждый раз, когда ваша компиляция GCC прерывается на аннотации SAL __foo, добавлять:

#define __foo

в no_sal.h, Затем убедитесь, что no_sal.h включается первым в каждой компиляции
мимоходом g++ опция -include /path/to/no_sal.h,

Тем не менее, я не ожидаю, что это будет конец ваших проблем в попытке
скомпилировать такой очень «глубоко Microsoft» код, как DirectX SDK с GCC. если ты
не хотите использовать Visual Studio, подумайте о переключении Windows GCC
распределение от MinGW (я думаю) TDM GCC 64-битный,
который связывает заголовки DirectX и библиотеки для GCC.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]