libsdl-org / SDL

Simple Directmedia Layer
https://libsdl.org
zlib License
9.79k stars 1.82k forks source link

SDL-UWP.sln will not compile #5504

Closed FrozenChameleon closed 2 years ago

FrozenChameleon commented 2 years ago

VisualC-WinRT/SDL-UWP.sln will not compile as is and gives these errors:

Severity    Code    Description Project File    Line    Suppression State
Error   C2016   C requires that a struct or union have at least one member (compiling source file ..\src\core\windows\SDL_windows.c)    SDL2-UWP    C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\winrt\roapi.h   61  
Error   C2016   C requires that a struct or union have at least one member (compiling source file ..\src\joystick\windows\SDL_windows_gaming_input.c)   SDL2-UWP    C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\winrt\roapi.h   61  
Error   C2061   syntax error: identifier '__x_ABI_CWindows_CGaming_CInput_CIRawGameController'  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    40  
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    42  
Error   C2059   syntax error: '}'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    46  
Error   C2061   syntax error: identifier '__x_ABI_CWindows_CGaming_CInput_CIRawGameController'  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    50  
Error   C2059   syntax error: '}'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    57  
Error   C2061   syntax error: identifier '__x_ABI_CWindows_CGaming_CInput_CIRawGameControllerStatics'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    60  
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    61  
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    62  
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    63  
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    65  
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    66  
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    67  
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    71  
Error   C2059   syntax error: '}'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    72  
Error   C2143   syntax error: missing ')' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    201 
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    201 
Error   C2371   'IID': redefinition; different basic types  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    201 
Error   C2143   syntax error: missing ';' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    201 
Error   C2059   syntax error: 'type'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    201 
Error   C2059   syntax error: ')'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    201 
Error   C2143   syntax error: missing ')' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    215 
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    215 
Error   C2059   syntax error: ')'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    215 
Error   C2054   expected '(' to follow 'This'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    216 
Error   C2143   syntax error: missing ')' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    220 
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    220 
Error   C2059   syntax error: ')'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    220 
Error   C2054   expected '(' to follow 'This'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    221 
Error   C2143   syntax error: missing ')' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    225 
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    225 
Error   C2371   'IInspectable': redefinition; different basic types SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    225 
Error   C2143   syntax error: missing ';' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    225 
Error   C2143   syntax error: missing ';' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    225 
Error   C2059   syntax error: ')'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    225 
Error   C2054   expected '(' to follow 'e'  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    226 
Error   C2143   syntax error: missing ')' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    380 
Error   C2143   syntax error: missing '{' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    380 
Error   C2371   'IInspectable': redefinition; different basic types SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    380 
Error   C2143   syntax error: missing ';' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    380 
Error   C2143   syntax error: missing ';' before '*'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    380 
Error   C2059   syntax error: ')'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    380 
Error   C2054   expected '(' to follow 'e'  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    381 
Error   C2061   syntax error: identifier 'controller_added_vtbl'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    413 
Error   C2059   syntax error: ';'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    413 
Error   C2513   ' ': no variable declared before '='    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    413 
Error   C2065   'IEventHandler_CRawGameControllerVtbl_QueryInterface': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    414 
Error   C2065   'IEventHandler_CRawGameControllerVtbl_AddRef': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    415 
Error   C2065   'IEventHandler_CRawGameControllerVtbl_Release': undeclared identifier   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    416 
Error   C2065   'IEventHandler_CRawGameControllerVtbl_InvokeAdded': undeclared identifier   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    418 
Error   C2061   syntax error: identifier 'controller_added' SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    419 
Error   C2059   syntax error: ';'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    419 
Error   C2513   ' ': no variable declared before '='    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    419 
Error   C2065   'controller_added_vtbl': undeclared identifier  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    421 
Error   C2061   syntax error: identifier 'controller_removed_vtbl'  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    423 
Error   C2059   syntax error: ';'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    423 
Error   C2513   ' ': no variable declared before '='    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    423 
Error   C2065   'IEventHandler_CRawGameControllerVtbl_QueryInterface': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    424 
Error   C2065   'IEventHandler_CRawGameControllerVtbl_AddRef': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    425 
Error   C2065   'IEventHandler_CRawGameControllerVtbl_Release': undeclared identifier   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    426 
Error   C2065   'IEventHandler_CRawGameControllerVtbl_InvokeRemoved': undeclared identifier SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    428 
Error   C2061   syntax error: identifier 'controller_removed'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    429 
Error   C2059   syntax error: ';'   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    429 
Error   C2513   ' ': no variable declared before '='    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    429 
Error   C2065   'controller_removed_vtbl': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    431 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    464 
Error   C2224   left of '.statics' must have struct/union type  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    464 
Error   C2198   'RoGetActivationFactoryFunc': too few arguments for call    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    464 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    473 
Error   C2224   left of '.arcade_stick_statics' must have struct/union type SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    473 
Error   C2198   'RoGetActivationFactoryFunc': too few arguments for call    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    473 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    475 
Error   C2224   left of '.arcade_stick_statics' must have struct/union type SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    475 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    475 
Error   C2224   left of '.arcade_stick_statics2' must have struct/union type    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    475 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    484 
Error   C2224   left of '.flight_stick_statics' must have struct/union type SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    484 
Error   C2198   'RoGetActivationFactoryFunc': too few arguments for call    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    484 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    493 
Error   C2224   left of '.gamepad_statics' must have struct/union type  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    493 
Error   C2198   'RoGetActivationFactoryFunc': too few arguments for call    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    493 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    495 
Error   C2224   left of '.gamepad_statics' must have struct/union type  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    495 
Error   C2224   left of '.gamepad_statics2' must have struct/union type SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    495 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    504 
Error   C2224   left of '.racing_wheel_statics' must have struct/union type SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    504 
Error   C2198   'RoGetActivationFactoryFunc': too few arguments for call    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    504 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    506 
Error   C2224   left of '.racing_wheel_statics' must have struct/union type SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    506 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    506 
Error   C2224   left of '.racing_wheel_statics2' must have struct/union type    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    506 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    513 
Error   C2224   left of '.statics' must have struct/union type  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    513 
Error   C2065   '__FIVectorView_1_Windows__CGaming__CInput__CRawGameController': undeclared identifier  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    514 
Error   C2297   '*': illegal, right operand has type 'int *'    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    514 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    516 
Error   C2224   left of '.statics' must have struct/union type  SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    516 
Error   C2065   'controller_added': undeclared identifier   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    516 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    516 
Error   C2224   left of '.controller_added_token' must have struct/union type   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    516 
Error   C2065   'wgi': undeclared identifier    SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    521 
Error   C1003   error count exceeds 100; stopping compilation   SDL2-UWP    SDL-main\src\joystick\windows\SDL_windows_gaming_input.c    521 
Error   MSB4181 The "CompileXaml" task returned false but did not log an error. SDL2-UWP    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\WindowsXaml\v16.0\8.2\Microsoft.Windows.UI.Xaml.Common.targets  415 
flibitijibibo commented 2 years ago

Asked the OP to post this as part of a random build error we had recently regarding WGI: https://github.com/libsdl-org/SDL/runs/5858704907

Something in the WinRT build breaks with WGI, but it's not clear what yet since all my issues have been random. Not super critical since UWP targets are going to be using Git anyway, but would be nice to know what broke in recent months.

flibitijibibo commented 2 years ago

Took a brief look at how these are declared and I think it has to do with the SDK... maybe we just need to update the target to the latest version again?

FrozenChameleon commented 2 years ago

Briefly tested it out with a minimum version of 16299 and it does indeed compile just fine with that SDK.

flibitijibibo commented 2 years ago

If you have a Git diff of your local SDL copy I can apply that change today - unlike other Windows projects we can be more aggressive with version minimums, and 16299 is almost 6 years old now.

FrozenChameleon commented 2 years ago

I do not have any Git stuff setup at the moment on this machine, the changes are just:

SDL-UWP.vcxproj at line 419

    <TargetPlatformVersion>10.0.10069.0</TargetPlatformVersion>
    <TargetPlatformMinVersion>10.0.10069.0</TargetPlatformMinVersion>
    <WindowsTargetPlatformVersion>10.0.10240.0</WindowsTargetPlatformVersion>
    <WindowsTargetPlatformMinVersion>10.0.10240.0</WindowsTargetPlatformMinVersion>

->

    <TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion>
    <TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
    <WindowsTargetPlatformMinVersion>10.0.16299.0</WindowsTargetPlatformMinVersion>
flibitijibibo commented 2 years ago

Good enough for me, will get this in now...