Users report missing file (ucrtbased.dll). How come?

Started by
8 comments, last by suliman 5 years, 6 months ago

Hi
My game runs fine for me obviously (compiled and run at win 10, 64bits). It uses directx 9.

Some users report they cannot run the exe (there is no installation, just unpack the game folder and run the exe). They get a systemerror which tells them that the game can't be started because ucrtbased.dll is missing. They are running win 8.1 (64 bits) with directx 11 installed.

Any idea what this is and how it can be solved? When googling it (ucrtbased.dll) I only find stuff about visual studio, but why would running an exe be connected to this? (or is it even?)

The game can be found here (https://ehgames.itch.io/plunder-horizon) but maybe this problem is well known?

Advertisement

The d at the end suggests it's linked to a debug dll. Did you maybe release a debug build?

Fruny: Ftagn! Ia! Ia! std::time_put_byname! Mglui naflftagn std::codecvt eY'ha-nthlei!,char,mbstate_t>

Look here: https://social.msdn.microsoft.com/Forums/de-DE/7f22624f-d8c9-435b-a546-f1fc470bfb5b/vs2015-c-project-needs-ucrtbaseddll-how-to-install

My game was compiled and uploaded in debug build. Also the game engine it uses was built in debug (but this has never been a problem before so Im confused). Would it work had it been in release mode? (and does both my project and underlying libraries need to be in release mode?).

The linked thread suggests I can include "ucrtbased.dll" in my exe-folder, is this a stupid way to solve this? Would the user need different files depending if the user has 32 or 64 bit version of windows? It seems silly to force the user to mess with the files...
(and is it only needed for win 7/8, not win 10?). And would this not work anymore on win xp? (which is as far back as I care to offer compatability).

Thank you for your help!

6 hours ago, suliman said:

and does both my project and underlying libraries need to be in release mode?

Yes, all the libraries need to be compiled the same way.  In your case 64bit debug, but preferred would be release obviously.  Also, debug releases are very slow to run, so if this is an official release you're being cruel to your end users :)

"Those who would give up essential liberty to purchase a little temporary safety deserve neither liberty nor safety." --Benjamin Franklin

The problem with deploying debug builds is, as already mentioned, you have to match all compilation units to debug. 

And usually regular users don't have debug libraries installed. It may work if you provide the debug dlls with your executable, but not in every case.

I'd rather avoid doing that.

Fruny: Ftagn! Ia! Ia! std::time_put_byname! Mglui naflftagn std::codecvt eY'ha-nthlei!,char,mbstate_t>

1. Ok so in release mode the win 8 users should have the needed file (dll) already? My game now forced them to use the debug version of that file which is not commonly available in win 8? I'll try that.

2. I build my games in 32 bit mode. I use 64 bit for my development but i thought this gives better backwards-compatability. 32 can be run in both 32 and 64 windows but 64 bit can only be run in 64 windows. Isn't this correct?

(ps. The debug version is only slightly slower, and still very fast, I get 800 fps in release and 750 fps in debug so I never bothered checking these things:) but I see now there is other complications)

There also may be legal ramifications from releasing debug .dlls, I do not know what Microsoft's rules are on releasing .dlls as in a lot of cases you're not allowed to include them with downloads but have to include the installer like back in the DirectX days.  So unless it's to friends/family I would not recommend packaging any .dlls with your release without checking the licensing first.

You should be using available information to make your decisions about 32/64 and what OS's to support.  https://store.steampowered.com/hwsurvey  60% of users of Steam are on 64bit Windows 10 (and over 93% are using a 64bit Windows OS in general, either Windows 7.1/8.0/8.1 or 10).  Last data I seen about 88% of PC users were on 64bit OS's.  Why not release both and let users pick which one they want to use?

"Those who would give up essential liberty to purchase a little temporary safety deserve neither liberty nor safety." --Benjamin Franklin

The user reports that the release version of it works without sending any loose DLLs so this seems what I need to (and should) do :)

Thank you all for the explanations!

This topic is closed to new replies.

Advertisement