2

免责声明:这很有可能是虚幻引擎特有的,但我在那里没有得到答案,所以我想我会在这里尝试更一般的查询。抱歉,如果这被认为是离题/太具体

在虚幻引擎 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 *)

(未链接方法被引用的方法是我正在调用的方法)。

以及其他 4 个类似的链接错误。

我不是 C++ 专家的任何想象,但我的理解是,当正确包含头文件时会导致链接错误,但实际上无法找到指向的方法的实现。

我不明白的是,它无法找到实现的方法在虚幻引擎中(我假设它实际上并没有缺少方法实现等!)。

此外,我正在调用的方法和它正在调用的方法(并且无法链接)都定义inline在同一个头文件中。我唯一能看到的可能是错误的方法是在头文件的下方声明和实现了正在使用的方法,但我不认为这可能是一个问题(当然不是链接问题)。

4

1 回答 1

3

确保在 .build.cs 中为您的目标包含 RHI 和 RenderCore,如下所示

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "RHI", "RenderCore", "ShaderCore" });
于 2015-09-09T06:03:57.610 回答