| /* |
| SDL_winrt_main_NonXAML.cpp, placed in the public domain by David Ludwig 3/13/14 |
| */ |
| |
| #include "SDL_main.h" |
| #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 |
| |
| /* Prevent MSVC++ from warning about threading models when defining our |
| custom WinMain. The threading model will instead be set via a direct |
| call to Windows::Foundation::Initialize (rather than via an attributed |
| function). |
| |
| To note, this warning (C4447) does not seem to come up unless this file |
| is compiled with C++/CX enabled (via the /ZW compiler flag). |
| */ |
| #ifdef _MSC_VER |
| #pragma warning(disable:4447) |
| #endif |
| |
| /* Make sure the function to initialize the Windows Runtime gets linked in. */ |
| #ifdef _MSC_VER |
| #pragma comment(lib, "runtimeobject.lib") |
| #endif |
| |
| int CALLBACK WinMain(HINSTANCE, HINSTANCE, LPSTR, int) |
| { |
| return SDL_WinRTRunApp(SDL_main, NULL); |
| } |