2014-07-17 3 views
1

Отказ от ответственности: существует высокая вероятность, что это очень специфично для 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 *)" ([email protected]@[email protected]@[email protected]@[email protected]@@Z) referenced in function "void __cdecl RHISetRenderTarget(class FRHITexture *,class FRHITexture *)" ([email protected]@[email protected]@[email protected]) 

Сжатый для читаемости:

unresolved external symbol: void RHISetRenderTargets(unsigned int, FRHIRenderTargetView const *,FRHITexture *,unsigned int,FRHIUnorderedAccessView * const *) 
referenced in: void RHISetRenderTarget(FRHITexture *,FRHITexture *) 

(Метод несвязанных метод ссылается метод, который я звоню).

И еще 4 ошибки сравнения simillar.

Я не являюсь каким-либо образом воображения экспертом на C++, но мое понимание - это ошибка связи, вызванная тем, что заголовочный файл правильно включен, но затем он не может реально найти реализацию метода для указания на ,

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

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

+0

вы добавить файл .lib, который содержит эту функцию? – Matt

+0

Я предполагаю, что, поскольку Unreal создает файл VS.sln, он обрабатывает все подобные вещи. Кроме того, поскольку фактический несвязанный метод находится в том же файле, что и метод, ссылающийся на него, может ли он оставаться отсутствующим файлом lib? –

+0

от ошибки, может быть lib файл отсутствует или несоответствие. – Matt

ответ

1

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

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