Comment by Aerocatia

3 hours ago

FYI if you have the MSVC redistributable 14.27.29114 you can use UCRT executables built with modern Mingw-W64 on Windows XP, and curl 8.18.0 will work too (microsoft removed the link but I found it on the PC gaming wiki). I never had to deal with GetDynamicTimeZoneInformation() for my stuff, but maybe it only is a problem if you use the related code and don't static link libstdc++?

Yes! I have heard there is a redistributable for getting UCRT installed onto Windows XP, but it seems like quite an obscure update. The idea was to basically make a version that would work on a relatively up to date SP3 version at the very least without system changes, so going with msvcrt instead sounded like the best idea. Otherwise I've heard there are other community-made patches that basically turn XP into more like Windows 7 compatibility wise (One Core API?), albeit with some caveats - I haven't tested whether the modern Principia Windows builds would work under such a setup.

As for GetDynamicTimeZoneInformation, yes it probably would disappear when doing static linking as Principia does not use it. However initially I was building the game with all the dependencies and libstdc++ as DLLs, but ended up linking it all statically after I had to statically link libcurl with mbedtls anyways.

  • Yeah, wanting to support a vanilla installation is a valid reason to stick to MSVCRT. Just watch out for those silent footguns like the %zu format specifier not existing, haha. I have not tried One Core API myself either as I personally draw the line where it is reasonable to expect people to use officially released runtimes.