2017-03-02 87 views
2

我認爲最近對mingw64的更新打破了與SDL庫的兼容性,但我不確定。mingw64的當前版本是否與SDL庫不兼容?以前沒有任何編譯器錯誤

是否有任何已知的解決方法?是否容易恢復到已知的工作版本?我不經常編譯它,而且對它很不熟悉。

這裏的編譯器錯誤:

CC src/haptic/windows/SDL_syshaptic.o 
In file included from src/haptic/windows/SDL_syshaptic.c:34:0: 
src/haptic/windows/../../joystick/windows/SDL_dxjoystick_c.h:69:3: error: conflicting types for 'XINPUT_GAMEPAD_EX' 
} XINPUT_GAMEPAD_EX; 
    ^~~~~~~~~~~~~~~~~ 
In file included from src/haptic/windows/../../joystick/windows/SDL_dxjoystick_c.h:42:0, 
       from src/haptic/windows/SDL_syshaptic.c:34: 
C:/msys64/mingw64/x86_64-w64-mingw32/include/xinput.h:182:3: note: previous declaration of 'XINPUT_GAMEPAD_EX' was here 
} XINPUT_GAMEPAD_EX, *PXINPUT_GAMEPAD_EX; 
    ^~~~~~~~~~~~~~~~~ 
In file included from src/haptic/windows/SDL_syshaptic.c:34:0: 
src/haptic/windows/../../joystick/windows/SDL_dxjoystick_c.h:75:3: error: conflicting types for 'XINPUT_STATE_EX' 
} XINPUT_STATE_EX; 
    ^~~~~~~~~~~~~~~ 
In file included from src/haptic/windows/../../joystick/windows/SDL_dxjoystick_c.h:42:0, 
       from src/haptic/windows/SDL_syshaptic.c:34: 
C:/msys64/mingw64/x86_64-w64-mingw32/include/xinput.h:192:3: note: previous declaration of 'XINPUT_STATE_EX' was here 
} XINPUT_STATE_EX, *PXINPUT_STATE_EX; 
    ^~~~~~~~~~~~~~~ 
make[2]: *** [Makefile:168: src/haptic/windows/SDL_syshaptic.o] Error 1 
make[2]: Leaving directory '/c/{redacted}/sdl2' 
make[1]: *** [Makefile:24: sdl2] Error 2 
make[1]: Leaving directory '/c/{redacted}' 
make: *** [Makefile:13: all] Error 2 

回答

1

好了,它看起來像兩個文件中的typedef簽名是完全一樣的,所以只要你註釋掉的代碼:

typedef struct 
{ 
    WORD wButtons; 
    BYTE bLeftTrigger; 
    BYTE bRightTrigger; 
    SHORT sThumbLX; 
    SHORT sThumbLY; 
    SHORT sThumbRX; 
    SHORT sThumbRY; 
    DWORD dwPaddingReserved; 
} XINPUT_GAMEPAD_EX; 

typedef struct 
{ 
    DWORD dwPacketNumber; 
    XINPUT_GAMEPAD_EX Gamepad; 
} XINPUT_STATE_EX; 

在無論是「xinput.h」還是「SDL_dxjoystick_c.h」,它都將允許代碼進行編譯。

這顯然只是一種臨時措施,我認爲SDL庫代碼可能需要更新以保持與最新mingw代碼的兼容性。

相關問題