Comments (3)
I don't get this behavior with the samples provided so I am going to assume this is user error. Thank you!
from directxtk.
This condition is in PlatformHeaders.h
which in the src
directory rather than the inc
directory. As such, it's intended use is as an internal implementation header. You are certainly free to use it directly in applications, but I do make slightly different assumptions.
The reason you are getting this error is mostly likely because _WIN32_WINNT_WIN10
is not defined, which means it defaults to 0 so the expression is evaluated to true.
I know the problem is not because
WINAPI_FAMILY
is not defined or it is set toWINAPI_FAMILY_DESKTOP_APP
becauseVirtualAlloc
is in the desktop partition so you would not be getting a compiler error. If you were building your Windows Store app with that setting, it would compile but it would fail to pass WACK validation.
This is one of the challenges of writing code that compiles with a broad range of toolsets & SDKs. The Windows 10 SDK is the only place that _WIN32_WINNT_WIN10
is defined by the standard headers, so contexts where the Windows 8.0, Windows 8.1 SDK, or Xbox One XDK are used won't have it defined. A similar issue happens with _WIN32_WINNT_WINBLUE
not being defined in the Windows 8.0 SDK--I don't actually have any 8.0 vs. 8.1 differences in any of my GitHub libraries. To solve this generally, I have two solutions based on internal vs. public use.
In public headers (i.e. those in Inc
) I explicitly use the version number rather than symbol name :
#if (_WIN32_WINNT >= 0x0A00 /*_WIN32_WINNT_WIN10*/)
Internally, I have the library's pch.h
define _WIN32_WINNT_WIN10
if it is not already defined. This allows me to use the more human readable symbol in both .h
and .cpp
files in the Src
folder.
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10)
I guess the real question is: What in the PlatformHelpers.h
do you use in your code that I should put into a public header instead of an internal one?
As a short-term fix, just add the following somewhere before you include PlatformHelpers.h
:
#ifndef _WIN32_WINNT_WIN10
#define _WIN32_WINNT_WIN10 0x0A00
#endif
See Dual-use Coding Techniques for Games
from directxtk.
Thank you Chuck! Your reply is very insightful and helps me better understand DirectXTK. It is such a clean, well thought out library.
from directxtk.
Related Issues (20)
- Make use of C++/WinRT when building for C++17
- ARM64 version of xwbtool HOT 3
- `MapGuard` undefined behavior after move HOT 3
- DirectX Tool Kit for DX9
- DrawLine line thickness HOT 1
- Mesh Outline Effect HOT 2
- Point Light Shader HOT 2
- Clarify required WinSDK version HOT 2
- Hard fps lock to refresh rate value in fullscreen games - Win11 22H2 (DX11) HOT 2
- XWBtool makes all wav files the same name after repackaging HOT 5
- Audio: how to set distance attenuation/fall-off? HOT 4
- darker images loading HOT 1
- Request/question: Add a Vector4/floating point overload for the spritebatch's draw function
- undefined data type in PostProcess method HOT 3
- Aa
- Should Mouse use WM_MOUSELEAVE for Win32 raw input
- SimpleMath geometric random functions
- Error with custom shaders HOT 4
- Keyboard and mouse uses inconsistent coordinate systems, resulting in incorrect movement HOT 4
- Clang on windows fails to compile HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from directxtk.