Build of master on Windows fails: HlslCrossCompile undefined

Updated to the current Github master with 4.3 files. Compiled Win 64 Debug Editor and link failed with HlslCrossCompile undefined. It looks like it’s OpenGL/Metal only so I’ve reverted those files.

Try using the dependency files for the latest preview build instead, which are tagged with “latest preview” as opposed to a specific version. No guarantees, but it’s worth a shot. I know that having dependency files updated more frequently is on their to do list, so hopefully this will be a bit easier soon.

I think I am using the latest preview which is 4.3.0 preview from Github/Releases. Is there something more recent?

Well, it was my understanding that the dependency files were tagged, which means they would have to have “latest preview” to work (for the Master). Also, when the initial version fork occurs (4.3 in this case, which is in testing/development), that version will only receive bug fixes and improvements to already included features until it’s ready for release, while the Master branch will continue to be developed concurrently.

On the other hand, dependencies for 4.3 might be more current, but could be lacking something depending on what development has occurred in Master since they forked. There’s probably a way to change the dependencies tag so that you can try them both, but I have no idea how to do that.

Official Epic developer chiming in to correct me and clarify matters in 3… 2… 1… :o

The 4.3-preview zipfiles are incompatible with the master branch head. The most cutting edge you’re going to get is (git checkout 8a9c44a) and make sure you use the provided zipfiles in latest-preview.

The same goes for 4.3-preview. The zip files in the 4.3-preview tag are NOT compatible with the 4.3 branch head. You’ll need to keep your zipfiles and source code in lock-step with the release tags for the time being.

/ Kyle

Hey guys, this is due to a mismatched/old hlslcc.h file. I’ll investigate & follow up.

What he said :cool:.

The issue is that changelist 2181739 has some changes to switch from extern “C” to regular (C++) for some of hlslcc, which lives in the ThirdParty folder, so you have a mix of old 3rd party files with newer engine source.

These dependency files worked for me. It now rebuilt succesfully, no errors.

History: Yesterday I updated to the latest sourcecode on branch 4.3 (commit 531c2ea) and downloaded latest 4.3 preview zip files when I encountered the error when attempting to build.
I just had to fetch the above files today (I didn’t pull latest code commits, if any), unzipped, and rebuilt successfully.

After trying some of the later changes in 4.3, I found the editor too unstable, so I tried to go back to 4.3.0-preview - but now I can’t build anymore.

     Creating library Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MetalShaderFormat.lib and object Engine\Intermediate\Build\Win64\UE4Editor\Development\UE4Editor-MetalShaderFormat.exp
Module.ShaderFormatOpenGL.cpp.obj : error LNK2019: unresolved external symbol HlslCrossCompile referenced in function "void __cdecl CompileShader_Windows_OGL(struct FShaderCompilerInput const &,struct FShaderCompilerOutput &,class FString const &,enum GLSLVersion)" (?CompileShader_Windows_OGL@@YAXAEBUFShaderCompilerInput@@AEAUFShaderCompilerOutput@@AEBVFString@@W4GLSLVersion@@@Z)
Engine\Binaries\Win64\UE4Editor-ShaderFormatOpenGL.dll : fatal error LNK1120: 1 unresolved externals
Module.MetalShaderFormat.cpp.obj : error LNK2019: unresolved external symbol HlslCrossCompile referenced in function "void __cdecl CompileShader_Metal(struct FShaderCompilerInput const &,struct FShaderCompilerOutput &,class FString const &)" (?CompileShader_Metal@@YAXAEBUFShaderCompilerInput@@AEAUFShaderCompilerOutput@@AEBVFString@@@Z)
Engine\Binaries\Win64\UE4Editor-MetalShaderFormat.dll : fatal error LNK1120: 1 unresolved externals

and ultimately:

ERROR : UBT error : Failed to produce item: Engine\Binaries\Win64\UE4Editor-ShaderFormatOpenGL.dll

I’ve tried both the 4.3.0-preview dependency zips as well as the latest-preview ones :frowning:

Sorry this has been painful; I’m (slowly) moving the hlslcc (cross-compiler) from Third Party into Engine, so this will not happen anymore. Can you try touching MetalShaderCompiler.cpp and OpenGLShaderCompiler.cpp? It might not be picking up the changes to hlslcc.h.

Should be all good now with the real 4.3:

Thanks for the work, RCaloca. I’ll be updating to it in the next day or so.