Skip to content

Commit

Permalink
WinRT: ugh, at least one file in an app's project seems to require C+…
Browse files Browse the repository at this point in the history
…+/CX compilation.

Assuming this is true, that file might as well be the one that contains WinMain.
  • Loading branch information
DavidLudwig committed Sep 17, 2013
1 parent efb3cdc commit aeaa050
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions src/main/winrt/SDL_winrt_main_NonXAML.cpp
@@ -1,6 +1,33 @@

#include <wrl.h>

/* At least one file in any SDL/WinRT app appears to require compilation
with C++/CX, otherwise a Windows Metadata file won't get created, and
an APPX0702 build error can appear shortly after linking.
The following set of preprocessor code forces this file to be compiled
as C++/CX, which appears to cause Visual C++ 2012's build tools to
create this .winmd file, and will help allow builds of SDL/WinRT apps
to proceed without error.
If other files in an app's project enable C++/CX compilation, then it might
be possible for SDL_winrt_main_NonXAML.cpp to be compiled without /ZW,
for Visual C++'s build tools to create a winmd file, and for the app to
build without APPX0702 errors. In this case, if
SDL_WINRT_METADATA_FILE_AVAILABLE is defined as a C/C++ macro, then
the #error (to force C++/CX compilation) will be disabled.
Please note that /ZW can be specified on a file-by-file basis. To do this,
right click on the file in Visual C++, click Properties, then change the
setting through the dialog that comes up.
*/
#ifndef SDL_WINRT_METADATA_FILE_AVAILABLE
#ifndef __cplusplus_winrt
#error SDL_winrt_main_NonXAML.cpp must be compiled with /ZW, otherwise build errors due to missing .winmd files can occur.
#endif
#endif


/* The app's C-style main will be passed into SDL.dll as a function
pointer, and called at the appropriate time.
*/
Expand Down

0 comments on commit aeaa050

Please sign in to comment.