免责声明:这对虚幻引擎非常具体,但我还没有得到答案,所以我想我在这里尝试更一般的查询。对不起,如果这被认为是主题/太具体
我在虚幻引擎4中编译以下代码时出现链接错误:
RHISetRenderTarget(TextureRenderTarget->GetRenderTargetTexture(), NULL);
这是在宏(ENQUEUE_UNIQUE_RENDER_COMMAND_TWOPARAMETER
)内调用的,但即使您不在,也会发生链接错误。
错误本身是:
MaterialToTextureRenderer.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl RHISetRenderTargets(unsigned int,class FRHIRenderTargetView const *,class FRHITexture *,unsigned int,class FRHIUnorderedAccessView * const *)" (__imp_?RHISetRenderTargets@@YAXIPEBVFRHIRenderTargetView@@PEAVFRHITexture@@IPEBQEAVFRHIUnorderedAccessView@@@Z) referenced in function "void __cdecl RHISetRenderTarget(class FRHITexture *,class FRHITexture *)" (?RHISetRenderTarget@@YAXPEAVFRHITexture@@0@Z)
压缩可读性:
unresolved external symbol: void RHISetRenderTargets(unsigned int, FRHIRenderTargetView const *,FRHITexture *,unsigned int,FRHIUnorderedAccessView * const *)
referenced in: void RHISetRenderTarget(FRHITexture *,FRHITexture *)
(引用unlinked方法的方法是我调用的方法)。
以及其他4个类似的链接错误。
我不是C ++专家的想象力,但是我的理解是当正确包含头文件时会导致链接错误但是它无法实际找到该方法的实现指向。
我不明白的是,它无法找到的实现方法是在虚幻引擎中(我假设它实际上没有丢失方法实现等等。)。 / p>
此外,我正在调用的方法及其调用的方法(并且无法链接)都在同一个头文件中定义inline
。我唯一能看到的可能是错误的是正在使用的方法是在头文件中进一步声明和实现的,但我不相信这可能是一个问题(当然不是链接问题)。
答案 0 :(得分:1)
请确保在.build.cs中为您的目标包含RHI和RenderCore
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "RHI", "RenderCore", "ShaderCore" });