From 3c9d33361c2d95b7852beeec6cdcd6fb0612fc47 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 18 Feb 2018 08:57:01 -0800 Subject: [PATCH] Fixed bug 4034 - Do we really need _DllMainCRTStartup() in every Windows build? Andreas Falkenhahn In src/SDL.c there is this code: _DllMainCRTStartup(HANDLE hModule, ... The comment says that this is needed on Watcom C for some reason but why is it included then when building with Visual C as well? Shouldn't it be only included when compiling on Watcom C then? I'm asking because this code caused me a lot of headaches because I'm building a DLL that contains SDL and I link using /MT and the _DllMainCRTStartup() symbol obviously led to lots of trouble but it wasn't clear to me where the problem was because all I got from the linker was: LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup So I had to got through each and every object to see what the culprit was. See here for the full story: https://stackoverflow.com/questions/25067151/lnk2019-unresolved-external-symbol-main-referenced-in-function-tmaincrtstar/48177067#48177067 So if it isn't necessary on Visual C, please just leave that symbol out on Visual C so that it no longer leads to any trouble. Thanks. --- src/SDL.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/SDL.c b/src/SDL.c index 0494a165e..354f2bc43 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -451,9 +451,7 @@ SDL_GetPlatform() #endif } -#if defined(__WIN32__) - -#if !defined(HAVE_LIBC) || (defined(__WATCOMC__) && defined(BUILD_DLL)) +#if defined(__WIN32__) && defined(__WATCOMC__) && defined(BUILD_DLL) /* Need to include DllMain() on Watcom C for some reason.. */ BOOL APIENTRY @@ -471,6 +469,4 @@ _DllMainCRTStartup(HANDLE hModule, } #endif /* building DLL with Watcom C */ -#endif /* __WIN32__ */ - /* vi: set sts=4 ts=4 sw=4 expandtab: */