Error LNK2019 and LNK2001?

I’m trying to implement the ProceduralMeshComponent. I’ve had no luck actually using the existing header files so I’m trying to create my own MeshComponent extension and just build it using what is in it. I’ve gone through and swapped all the names that conflicted and it appears to be clean, but now I’m getting this list of link errors. Any idea what I’m missing *OR if you happen to know hot to correctly include the original ProceduralMeshComponent.h?

1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: unsigned int __cdecl FRHIResource::AddRef(void)const " (__imp_?AddRef@FRHIResource@@QEBAIXZ) referenced in function "public: __cdecl TRefCountPtr<class FRHIUniformBuffer>::TRefCountPtr<class FRHIUniformBuffer>(class FRHIUniformBuffer *,bool)" (??0?$TRefCountPtr@VFRHIUniformBuffer@@@@QEAA@PEAVFRHIUniformBuffer@@_N@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: unsigned int __cdecl FRHIResource::Release(void)const " (__imp_?Release@FRHIResource@@QEBAIXZ) referenced in function "void __cdecl DestructItems<struct FMeshBatchElement>(struct FMeshBatchElement *,int)" (??$DestructItems@UFMeshBatchElement@@@@YAXPEAUFMeshBatchElement@@H@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) class TRefCountPtr<class FRHIUniformBuffer> __cdecl RHICreateUniformBuffer(void const *,struct FRHIUniformBufferLayout const &,enum EUniformBufferUsage)" (__imp_?RHICreateUniformBuffer@@YA?AV?$TRefCountPtr@VFRHIUniformBuffer@@@@PEBXAEBUFRHIUniformBufferLayout@@W4EUniformBufferUsage@@@Z) referenced in function "public: static class TUniformBufferRef<class FPrimitiveUniformShaderParameters> __cdecl TUniformBufferRef<class FPrimitiveUniformShaderParameters>::CreateUniformBufferImmediate(class FPrimitiveUniformShaderParameters const &,enum EUniformBufferUsage)" (?CreateUniformBufferImmediate@?$TUniformBufferRef@VFPrimitiveUniformShaderParameters@@@@SA?AV1@AEBVFPrimitiveUniformShaderParameters@@W4EUniformBufferUsage@@@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class TRefCountPtr<class FRHIIndexBuffer> __cdecl FRHICommandListImmediate::CreateIndexBuffer(unsigned int,unsigned int,unsigned int,struct FRHIResourceCreateInfo &)" (__imp_?CreateIndexBuffer@FRHICommandListImmediate@@QEAA?AV?$TRefCountPtr@VFRHIIndexBuffer@@@@IIIAEAUFRHIResourceCreateInfo@@@Z) referenced in function "class TRefCountPtr<class FRHIIndexBuffer> __cdecl RHICreateIndexBuffer(unsigned int,unsigned int,unsigned int,struct FRHIResourceCreateInfo &)" (?RHICreateIndexBuffer@@YA?AV?$TRefCountPtr@VFRHIIndexBuffer@@@@IIIAEAUFRHIResourceCreateInfo@@@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void * __cdecl FRHICommandListImmediate::LockIndexBuffer(class FRHIIndexBuffer *,unsigned int,unsigned int,enum EResourceLockMode)" (__imp_?LockIndexBuffer@FRHICommandListImmediate@@QEAAPEAXPEAVFRHIIndexBuffer@@IIW4EResourceLockMode@@@Z) referenced in function "public: virtual void __cdecl FProcMeshIndexBuffer::InitRHI(void)" (?InitRHI@FProcMeshIndexBuffer@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __cdecl FRHICommandListImmediate::UnlockIndexBuffer(class FRHIIndexBuffer *)" (__imp_?UnlockIndexBuffer@FRHICommandListImmediate@@QEAAXPEAVFRHIIndexBuffer@@@Z) referenced in function "public: virtual void __cdecl FProcMeshIndexBuffer::InitRHI(void)" (?InitRHI@FProcMeshIndexBuffer@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: class TRefCountPtr<class FRHIVertexBuffer> __cdecl FRHICommandListImmediate::CreateVertexBuffer(unsigned int,unsigned int,struct FRHIResourceCreateInfo &)" (__imp_?CreateVertexBuffer@FRHICommandListImmediate@@QEAA?AV?$TRefCountPtr@VFRHIVertexBuffer@@@@IIAEAUFRHIResourceCreateInfo@@@Z) referenced in function "class TRefCountPtr<class FRHIVertexBuffer> __cdecl RHICreateVertexBuffer(unsigned int,unsigned int,struct FRHIResourceCreateInfo &)" (?RHICreateVertexBuffer@@YA?AV?$TRefCountPtr@VFRHIVertexBuffer@@@@IIAEAUFRHIResourceCreateInfo@@@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static enum ENamedThreads::Type __cdecl FRenderCommand::GetDesiredThread(void)" (__imp_?GetDesiredThread@FRenderCommand@@SA?AW4Type@ENamedThreads@@XZ) referenced in function "private: void __cdecl TGraphTask<class `public: void __cdecl FProcMeshVertexFactory::Init(class FProcMeshVertexBuffer const *)'::`7'::EURCMacro_InitProcMeshVertexFactory>::SetupPrereqs(class TArray<class TRefCountPtr<class FGraphEvent>,class TInlineAllocator<4,class FDefaultAllocator> > const *,enum ENamedThreads::Type,bool)" (?SetupPrereqs@?$TGraphTask@VEURCMacro_InitProcMeshVertexFactory@?6??Init@FProcMeshVertexFactory@@QEAAXPEBVFProcMeshVertexBuffer@@@Z@@@AEAAXPEBV?$TArray@V?$TRefCountPtr@VFGraphEvent@@@@V?$TInlineAllocator@$03VFDefaultAllocator@@@@@@W4Type@ENamedThreads@@_N@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static enum ESubsequentsMode::Type __cdecl FRenderCommand::GetSubsequentsMode(void)" (__imp_?GetSubsequentsMode@FRenderCommand@@SA?AW4Type@ESubsequentsMode@@XZ) referenced in function "public: static class TGraphTask<class `public: void __cdecl FProcMeshVertexFactory::Init(class FProcMeshVertexBuffer const *)'::`7'::EURCMacro_InitProcMeshVertexFactory>::FConstructor __cdecl TGraphTask<class `public: void __cdecl FProcMeshVertexFactory::Init(class FProcMeshVertexBuffer const *)'::`7'::EURCMacro_InitProcMeshVertexFactory>::CreateTask(class TArray<class TRefCountPtr<class FGraphEvent>,class TInlineAllocator<4,class FDefaultAllocator> > const *,enum ENamedThreads::Type)" (?CreateTask@?$TGraphTask@VEURCMacro_InitProcMeshVertexFactory@?6??Init@FProcMeshVertexFactory@@QEAAXPEBVFProcMeshVertexBuffer@@@Z@@@SA?AVFConstructor@1@PEBV?$TArray@V?$TRefCountPtr@VFGraphEvent@@@@V?$TInlineAllocator@$03VFDefaultAllocator@@@@@@W4Type@ENamedThreads@@@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) class FRHICommandListImmediate & __cdecl GetImmediateCommandList_ForRenderCommand(void)" (__imp_?GetImmediateCommandList_ForRenderCommand@@YAAEAVFRHICommandListImmediate@@XZ) referenced in function "public: void __cdecl `public: void __cdecl FProcMeshVertexFactory::Init(class FProcMeshVertexBuffer const *)'::`7'::EURCMacro_InitProcMeshVertexFactory::DoTask(enum ENamedThreads::Type,class TRefCountPtr<class FGraphEvent> const &)" (?DoTask@EURCMacro_InitProcMeshVertexFactory@?6??Init@FProcMeshVertexFactory@@QEAAXPEBVFProcMeshVertexBuffer@@@Z@QEAAXW4Type@ENamedThreads@@AEBV?$TRefCountPtr@VFGraphEvent@@@@@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl FRenderResource::FRenderResource(void)" (__imp_??0FRenderResource@@QEAA@XZ) referenced in function "public: __cdecl FIndexBuffer::FIndexBuffer(void)" (??0FIndexBuffer@@QEAA@XZ)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl FRenderResource::~FRenderResource(void)" (__imp_??1FRenderResource@@UEAA@XZ) referenced in function "public: virtual __cdecl FIndexBuffer::~FIndexBuffer(void)" (??1FIndexBuffer@@UEAA@XZ)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl BeginInitResource(class FRenderResource *)" (__imp_?BeginInitResource@@YAXPEAVFRenderResource@@@Z) referenced in function "public: __cdecl FProceduralMeshSceneProxy::FProceduralMeshSceneProxy(class UGenProcMesh *)" (??0FProceduralMeshSceneProxy@@QEAA@PEAVUGenProcMesh@@@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl FVertexBuffer::~FVertexBuffer(void)" (__imp_??1FVertexBuffer@@UEAA@XZ) referenced in function "int `public: __cdecl FProcMeshProxySection::FProcMeshProxySection(void)'::`1'::dtor$3" (?dtor$3@?0???0FProcMeshProxySection@@QEAA@XZ@4HA)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl FVertexBuffer::FVertexBuffer(void)" (__imp_??0FVertexBuffer@@QEAA@XZ) referenced in function "public: __cdecl FProcMeshProxySection::FProcMeshProxySection(void)" (??0FProcMeshProxySection@@QEAA@XZ)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: struct FRHIUniformBufferLayout const & __cdecl FUniformBufferStruct::GetLayout(void)const " (__imp_?GetLayout@FUniformBufferStruct@@QEBAAEBUFRHIUniformBufferLayout@@XZ) referenced in function "public: static class TUniformBufferRef<class FPrimitiveUniformShaderParameters> __cdecl TUniformBufferRef<class FPrimitiveUniformShaderParameters>::CreateUniformBufferImmediate(class FPrimitiveUniformShaderParameters const &,enum EUniformBufferUsage)" (?CreateUniformBufferImmediate@?$TUniformBufferRef@VFPrimitiveUniformShaderParameters@@@@SA?AV1@AEBVFPrimitiveUniformShaderParameters@@W4EUniformBufferUsage@@@Z)
1>GenProcMesh.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) bool __cdecl AllowDebugViewmodes(void)" (__imp_?AllowDebugViewmodes@@YA_NXZ) referenced in function "public: virtual void __cdecl FProceduralMeshSceneProxy::GetDynamicMeshElements(class TArray<class FSceneView const *,class FDefaultAllocator> const &,class FSceneViewFamily const &,unsigned int,class FMeshElementCollector &)const " (?GetDynamicMeshElements@FProceduralMeshSceneProxy@@UEBAXAEBV?$TArray@PEBVFSceneView@@VFDefaultAllocator@@@@AEBVFSceneViewFamily@@IAEAVFMeshElementCollector@@@Z)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual class FString __cdecl FRenderResource::GetFriendlyName(void)const " (?GetFriendlyName@FRenderResource@@UEBA?AVFString@@XZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual class FString __cdecl FVertexBuffer::GetFriendlyName(void)const " (?GetFriendlyName@FVertexBuffer@@UEBA?AVFString@@XZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual unsigned __int64 __cdecl FVertexFactory::GetStaticBatchElementVisibility(class FSceneView const &,struct FMeshBatch const *)const " (?GetStaticBatchElementVisibility@FVertexFactory@@UEBA_KAEBVFSceneView@@PEBUFMeshBatch@@@Z)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl FRenderResource::InitDynamicRHI(void)" (?InitDynamicRHI@FRenderResource@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl FRenderResource::InitRHI(void)" (?InitRHI@FRenderResource@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl FRenderResource::InitResource(void)" (?InitResource@FRenderResource@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl FVertexFactory::IsGPUSkinned(void)const " (?IsGPUSkinned@FVertexFactory@@UEBA_NXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl FRenderResource::ReleaseDynamicRHI(void)" (?ReleaseDynamicRHI@FRenderResource@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl FRenderResource::ReleaseRHI(void)" (?ReleaseRHI@FRenderResource@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl FVertexBuffer::ReleaseRHI(void)" (?ReleaseRHI@FVertexBuffer@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl FVertexFactory::ReleaseRHI(void)" (?ReleaseRHI@FVertexFactory@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl FRenderResource::ReleaseResource(void)" (?ReleaseResource@FRenderResource@@UEAAXXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl FVertexFactory::SupportsNullPixelShader(void)const " (?SupportsNullPixelShader@FVertexFactory@@UEBA_NXZ)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) class FRHICommandListExecutor GRHICommandList" (__imp_?GRHICommandList@@3VFRHICommandListExecutor@@A)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) bool GIsThreadedRendering" (__imp_?GIsThreadedRendering@@3_NA)
1>GenProcMesh.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) bool GMainThreadBlockedOnRenderThread" (__imp_?GMainThreadBlockedOnRenderThread@@3_NA)
1>C:\Users\Heath\Documents\Unreal Projects\BallsOut 4.8\Binaries\Win64\UE4Editor-BallsOut.dll : fatal error LNK1120: 33 unresolved externals
2 Likes

Well how about that, I tried adding “RHI”, “RenderCore”, “ShaderCore”

PublicDependencyModuleNames.AddRange(new string[] { “Core”, “CoreUObject”, “Engine”, “InputCore”, “RHI”, “RenderCore”, “ShaderCore” });

and it worked.

2 Likes

Thank you! :slight_smile: