免责声明:这可能与虚幻引擎有很大关系,但我在那里没有得到答案,所以我想在这里尝试一个更一般性的查询。如果这被认为是离题或太具体了,请谅解。
我在虚幻引擎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
。唯一可能出错的地方就是使用的方法在头文件中进一步声明和实现,但我不认为这可能是问题(肯定不是链接问题)。
RHISetRenderTarget(FRHITexture*,FRHITexture*)
失败,我会接受它,但它是在该方法内部调用的方法链接失败。这是因为编译器没有将其他方法内联(例如太大),所以只有在强制查找库时才会出现这种情况吗? - T. Kiley