Old headers and libraries layout
The existing file layout for the Microsoft GDK is summarized as follows.New headers and libraries layout
For the October 2025 GDK release, the new layout offers an alternative layout for the headers and libraries that make the platform integration easier and able to accommodate additional platforms over time.Using the new layout with MSBuild custom platforms
The existing Gaming.*.x64 MSBuild platforms use the old layout by default, but you can opt into the new layout by setting the GDKCrossPlatform property.
The project needs to add to AdditionalDependencies the extension libraries it consumes because they’re each ‘opt-in’.
The project also needs to copy the additional DLLs it uses into the layout. You can do this either through Custom Build steps that are typical of many DLL library integrations, or by editing the vcxproj or adding a props file to use the ReferenceCopyLocalPaths item group list. The MSBuild below lists all the possible DLLs but individual projects will only need some of these.
GameDKLatest is only set by the Microsoft GDK with XBOX Extensions. As a result, we introduced new environment variables that fully support side-by-side installation of both versions of the Microsoft GDK: GameDKCoreLatest is set by the Microsoft GDK.Using a Directory.Build.props file
As a way to quickly validate existing GDK Gaming.*.x64 projects by using the new layout, place the following content into a file named Directory.Build.props in your source tree. This opts in to the new layout and includes most or all extension libraries even if not used by the project.The GDKExtLibNames property isn’t used by the MSBuild rules when building with GDKCrossPlatform set to true. Because it’s already present for building with the older MSBuild rules, it’s used in this props file as a way to opt in to some additional DLLs in the layout.
How to update an x64 game to add ARM64
To add ARM64 support to an existing x64 game project, follow these steps:- Use Visual Studio 2022. ARM64 support requires Visual Studio 2022. Visual Studio 2019 isn’t supported for ARM64 builds.
- Enable the new layout. Make sure your project uses the new layout by setting
GDKCrossPlatformtotruein your project file. - Create ARM64 configurations. Copy your existing x64 configurations (such as Debug and Release) to create corresponding ARM64 configurations.
- Update library paths. Edit the VC++ Directories for your ARM64 configurations so the library path references
lib\arm64instead oflib\x64. - Update XSAPI library references. Update the link statements for all configurations (not just ARM64) to use
Microsoft.Xbox.Services.143.GDK.C.libinstead ofMicrosoft.Xbox.Services.142.GDK.C.lib. - Update ReferenceCopyLocalPaths. Check for
ReferenceCopyLocalPathsusage in your.vcxprojfile that might need updating to reference thearm64bin folder instead ofx64.
If the startup of your title fails with error 0xc000007b, it means you have accidentally tried to load an x64 format DLL into your ARM64 process. Check your project system for
ReferenceCopyLocalPaths items that might need updating.Using the new layout with the MSBuild x64 platform
Instead of using the Gaming.Desktop.x64 platform, you can use the stock x64 platform to build for PC. In the old layout, this required adding<Import Project="...\ExtensionLibrary.props"> statements for the Extension Libraries as detailed in Using the x64 platform with the Microsoft Game Development Kit (GDK).
In the new layout, the integration instructions are streamlined.
Using the new layout with CMake
When you use the Microsoft Visual Studio generators with CMake and use the Gaming.*.x64 custom MSBuild platforms, enable the new layout by using the following code.VS_GLOBAL_GDKExtLibNames and replace it with the following code (assuming CMake 3.21 or later) to copy the used extension DLLs into the layout.
Using the new layout with custom build systems
Building for Windows x64 by using the GDK requires the following.Reading the build edition from an installed file
The new layout doesn’t contain thegrdk.ini file. To find the edition information by parsing a file, use grdk.h.
Here’s an example in PowerShell that works with older GDK releases as well.
