mingw64的当前版本是否与SDL库不兼容?以前没有任何编译器错误
问题描述:
我认为最近对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
答
好了,它看起来像两个文件中的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代码的兼容性。