2016-03-19 9 views
0
#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取得中__in & __outはこのスコープのエラーでは宣言されませんでした。 \ DirectSDK \ Libの\ x86の-lXinput -oジョイパッドg ++を使用したC++ XInputコンパイル

と私も グラム++ Joypad.cpp -ICを試してみました:\ DirectSDK \は-LCを含める:

は私がJoypad.cpp -IC++グラム以下の構文を使用しました: \ Windows SDK〜um、共有など-LC:\ Windows SDK \ Lib -lXInput -oジョイパッド

私が見逃したことはありますか?私はmingwのx86_64での使用

ディレクトリに含ま: Windowsのキット8.1(ええと、共有、WinRTの) マイクロソフトのDirectX SDKを

ライブラリが含ま:XInput.lib - C:\ PROGRA〜2個の\マイクロス〜4 \をLib \ x86の

+0

エラーはhttp://pastebin.com/mJen909Tにあります –

答えて

0

__in__out Microsoft固有SAL の注釈です。それらは、MS Visual Studio C++コンパイラでは認識されますが、GCCコンパイラでは認識されません。

#define __foo 

no_sal.hに:彼らは、SAL注釈__fooに自分のヘッダファイル、たとえば、no_sal.hと たびに、あなたのGCCのコンパイルbarfsを作る加えることであろう「削除」する

方法。次にno_sal.hが、すべてのコンパイル に最初に含まれていることを確認してください。にオプション-include /path/to/no_sal.hを渡します。

しかし、私はこれはGCCとのDirectX SDKのような非常に「深くマイクロソフト」のコードをコンパイル しようとしてあなたの問題の終わりであることを期待していません。 Visual Studioを使用したくない場合は、Windows GCC ディストリビューションをMinGW(おそらく)からTDM GCC 64-bit( )に切り替え、GCCのDirectXヘッダーとライブラリをバンドルすることを検討してください。

+0

私はそれが正常にコンパイルされました。ありがとうございました。しかし、私は思ったように動作していないようです。私は一般的なツインUSBをサポートするためにx360ceを使用しましたが、それは仕事をしなかった、それはそれを認識しません。 btw、私はVisual Studioを使用してコンパイルし、x360ceを使用してジョイパッドを認識すると、このプログラムはうまく動作します。 –

+0

ありがとうございました。私は今作った。どうもありがとう! –

関連する問題