Ошибка ссылки в Unreal Engine

Отказ от ответственности: есть большая вероятность, что это очень специфично для Unreal Engine, но у меня нет ответа, поэтому я решил попробовать более общий запрос здесь. Извините, если это считается не по теме / слишком конкретным

Я получаю сообщение об ошибке компиляции следующего кода в Unreal Engine 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 ++, но, насколько я понимаю, ошибка в ссылке возникает из-за того, что заголовочный файл включен правильно, но в действительности он не может найти реализацию метода, на которую можно указать.

Что я не понимаю, так это то, что метод, реализация которого он не может найти, находится в Unreal Engine (который, как я предполагаю, на самом деле не имеет отсутствующих реализаций метода и т. Д.!).

Кроме того, оба метода, которые я вызываю, и метод, который он вызывает (и не может связать), оба определены inline в том же заголовочном файле. Единственное, что я могу видеть, что может быть неправильным, — это то, что используемый метод объявлен и реализован далее в заголовочном файле, но я не верю, что это может быть проблемой (конечно, не проблемой со связью).

1

Решение

Убедитесь, что вы включили RHI и RenderCore в свои .build.cs для вашей цели, как это

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

Другие решения


По вопросам рекламы [email protected]