Download

Link error building engine

Hi there,

I’m trying to build the engine from source, I’ve managed to do it on another machine, the only difference is that I’m building from the D:\ drive. Shouldn’t be an issue though. This is the error I’m getting:

**Error 3 error LNK2019: unresolved external symbol “public: static class ir_function_signature * __cdecl FCodeBackend::FindEntryPointFunction(struct exec_list *,struct _mesa_glsl_parse_state *,char const *)” (?FindEntryPointFunction@FCodeBackend@@SAPEAVir_function_signature@@PEAUexec_list@@PEAU_mesa_glsl_parse_state@@PEBD@Z) referenced in function "public: virtual bool __cdecl FMetalCodeBackend::GenerateMain(enum EHlslShaderFrequency,char const *,struct exec_list ,struct _mesa_glsl_parse_state )" (?GenerateMain@FMetalCodeBackend@@UEAA_NW4EHlslShaderFrequency@@PEBDPEAUexec_list@@PEAU_mesa_glsl_parse_state@@@Z) D:\GameDev\UnrealEngine\Engine\Intermediate\ProjectFiles\Module.MetalShaderFormat.cpp.obj UE4

Thanks and great engine!!

The hlslcc .lib files are out of date for the moment.

Try building hlslcc yourself by running ‘UE4_BuildThirdPartyLib.bat’ inside a VS command prompt at directory ‘Engine/Source/ThirdParty/hlslcc’

Thanks jubanka, that solved it. Why is it though that this happened in one computer and worked well in another?

The compiled .lib objects will get updated eventually through the ‘Required*.zip’ files on GitHub. In this case, the source files had been updated with the correct functions but the .libs were out of date, so compiling just worked.

My guess as to the discrepancy you mention is that you built a different branch/tag on the other computer in which the offending functions hadn’t been introduced, or you built the master at a previous point in time, again, before the use of the offending functions was introduced.

BTW, I’ve seen it mentioned that hlslcc is being moved into the source tree (so it shouldn’t be distributed through the additional zip files) so it could be that the addional build step to build it during the normal UE4 build process hasn’t been coded yet. That is also a possibility, though I did not delve that deep into the issue.