Compilation Issue with VS 2022
nickenchev opened this issue · 5 comments
ArmorPaint version:
Latest commit hash is: d9dbdb6
OS/device including version:
RX 6750 XT
Issue description:
Followed the official build instructions, seeing the following build errors in iron_array.h
1>C:\projects\armortools\armorcore\Sources\iron\iron_array.h(53,24): error C2016: C requires that a struct or union have at least one member
1>(compiling source file '../../armorcore/Sources/iron/iron_array.c')
1>C:\projects\armortools\armorcore\Sources\iron\iron_array.h(54,29): error C2016: C requires that a struct or union have at least one member
1>(compiling source file '../../armorcore/Sources/iron/iron_array.c')
Seems like the C standard doesn't allow for empty structs, which is how they are declared:
typedef struct buffer {} buffer_t;
typedef struct buffer_view {} buffer_view_t;
I've tried switching the C standard (defaults to Legacy MSVC) to C11 and C17 by configuring the project settings in VS2022 but no success. I believe the empty structs are allowed in C++ but not C, and I think this file is being compiled by the Visual C compiler rather than the C++ compiler.
Ran the following prior to opening the solution in VS, had no issues with this:
C:\projects\armortools\armorpaint>..\armorcore\Kinc\make --from ..\armorcore -g direct3d11
Microsoft Visual Studio Community 2022
Version 17.9.1
VisualStudio.17.Release/17.9.1+34616.47
Microsoft .NET Framework
Version 4.8.09032
Installed Version: Community
Visual C++ 2022 00482-90000-00000-AA822
Microsoft Visual C++ 2022
+1. Also having the same issue. Followed Windows RT instructions:
Severity Code Description Project File Line Suppression State Details
Error C2016 C requires that a struct or union have at least one member ArmorPaint C:\Users\whitley\Desktop\armortools\armorcore\Sources\iron\iron_array.h 54
iconarray.h
typedef struct buffer {} buffer_t;
typedef struct buffer_view {} buffer_view_t;
same here. Severity Code Description Project File Line Suppression State Details
Error C2016 C requires that a struct or union have at least one member ArmorLab D:\Studio Work v2\Mirror\armorlab\armortools\armorcore\Sources\iron\iron_array.h 53
Should be resolved, thanks for report.
TY so much for the patch and for pushing this industry forward.
Fantastic. Thank you. But...
did a git fetch followed by
git merge origin/main
and then in Visual studio.. Build| Build Solution...
still same error
Severity Code Description Project File Line Suppression State Details
Error C2016 C requires that a struct or union have at least one member ArmorLab D:\Studio Work v2\Mirror\armorlab\armortools\armorcore\Sources\iron\iron_array.h 53
Severity Code Description Project File Line Suppression State Details
Error C2016 C requires that a struct or union have at least one member ArmorLab D:\Studio Work v2\Mirror\armorlab\armortools\armorcore\Sources\iron\iron_array.h 54
typedef struct buffer {} buffer_t;
typedef struct buffer_view {} buffer_view_t;
Am I doing something wrong? I am a newbie to GIT so very probable... please help