Hi everyone!
Recently, I upgraded my project to 's 4.12 branch, everything works fine from downloading to project, building and packaging for me.
However, after I open up my shipping build game, an error message show up and says something about missing “d3dcompiler_47.dll”
After some research on google, I found the answer from page:
https://forums.unrealengine/printthread.php?t=53735&pp=40&page=82
After copying the “d3dcompiler_47.dll” from Engine\Binaries\ThirdParty\CEF3\Win64\d3dcompiler_47.dll to C:\Windows\System32
I can successfully run my shipping version without problem. But solution still leaves me with 2 unanswered questions:
- Suppose I uploaded my game to steam, if the user buying my game are using win7 and didn’t have the required .dll to run the game, what can I do to
have their system acquire the missing .dll?
- The second question is probably due to the lack of understanding of UE4 on my part, but I will like to know why the engine still need a shader compile .dll
when executing a cooked game? Aren’t the shader already compiled in a shipping build? If I can somehow make the shipping version not compile the shader
again, will mean the end user doesn’t require the “d3dcompiler_47.dll” anymore?
Any response will be greatly appreciated, and thank you for your patience for reading my post. 
Edit: 2016/08/28
After trying to run my shipping version for some times, I noticed the shipping version sometimes crashes from start for unknown reasons. (So simply copy d3dcompiler_47.dll to system32 might not be the solution for me)
Edit: 2016/08/28 07:51
I took a look of the crash dump generated from my shipping build, and found the crash is due to:
void FFlexFluidSurfaceRenderer::RenderDepth(FRHICommandList& RHICmdList, FPrimitiveSceneProxy* SceneProxy, const FViewInfo& View)
I simply comment out the function’s body and rebuild again and the shipping build work without problem. (I know it’s a lame way to fix the problem, but I don’t use flex particle anyways.)