I was looking at the procedural mesh generation tutorial in the wiki and wanted to try something with a staticmesh component but I keep getting linker errors when inheriting from FStaticMeshSceneProxy. I am only overriding the DrawDynamicElements call. So could anyone help me ??
Announcement
Collapse
No announcement yet.
Inheriting from FStaticMeshSceneProxy throws linker errors
Collapse
X
-
Here is the FGeneratedMeshSceneProxy class , using FPrimitiveSceneProxy instead of FStaticMeshSceneProxy raises no errors
Code:class FGeneratedMeshSceneProxy : public FStaticMeshSceneProxy { public: FGeneratedMeshSceneProxy(UHiglighttableStaticMeshComponent* Component) : FStaticMeshSceneProxy(Component) { } virtual ~FGeneratedMeshSceneProxy() { } virtual void DrawDynamicElements(FPrimitiveDrawInterface* PDI, const FSceneView* View, uint32 DrawDynamicFlags) { } virtual uint32 GetMemoryFootprint(void) const { return(sizeof(*this) + GetAllocatedSize()); } uint32 GetAllocatedSize(void) const { return(FPrimitiveSceneProxy::GetAllocatedSize()); } private: };
The errors:
Error 23 error MSB3073: The command ""C:\UnrealEngine - 4.1.1\UnrealEngine - 4.1.1\Engine\Build\BatchFiles\Build.bat" MyProjectEditor Win64 Development "C:\Users\i5\Documents\Unreal Projects\MyProject\MyProject.uproject"" exited with code -1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.MakeFile.Targets 38 5 MyProject
Error 20 error LNK2019: unresolved external symbol "public: virtual __cdecl FStaticMeshSceneProxy::FLODInfo::~FLODInfo(void)" (??1FLODInfo@FStaticMeshSceneProxy@@UEAA@XZ) referenced in function "public: void __cdecl TIndirectArray<class FStaticMeshSceneProxy::FLODInfo,class FDefaultAllocator>::Empty(int)" (?Empty@?$TIndirectArray@VFLODInfo@FStaticMeshSceneProxy@@VFDefaultAllocator@@@@QEAAXH@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 8 error LNK2019: unresolved external symbol "public: __cdecl FStaticMeshSceneProxy::FStaticMeshSceneProxy(class UStaticMeshComponent *)" (??0FStaticMeshSceneProxy@@QEAA@PEAVUStaticMeshComponent@@@Z) referenced in function "public: __cdecl `public: virtual class FPrimitiveSceneProxy * __cdecl UHiglighttableStaticMeshComponent::CreateSceneProxy(void)'::`2'::FGeneratedMeshSceneProxy::FGeneratedMeshSceneProxy(class UHiglighttableStaticMeshComponent *)" (??0FGeneratedMeshSceneProxy@?1??CreateSceneProxy@UHiglighttableStaticMeshComponent@@UEAAPEAVFPrimitiveSceneProxy@@XZ@QEAA@PEAV2@@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 15 error LNK2001: unresolved external symbol "public: virtual void __cdecl FStaticMeshSceneProxy::OnTransformChanged(void)" (?OnTransformChanged@FStaticMeshSceneProxy@@UEAAXXZ) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 19 error LNK2001: unresolved external symbol "public: virtual void __cdecl FStaticMeshSceneProxy::GetLightRelevance(class FLightSceneProxy const *,bool &,bool &,bool &,bool &)const " (?GetLightRelevance@FStaticMeshSceneProxy@@UEBAXPEBVFLightSceneProxy@@AEA_N111@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 13 error LNK2001: unresolved external symbol "public: virtual void __cdecl FStaticMeshSceneProxy:rawStaticElements(class FStaticPrimitiveDrawInterface *)" (?DrawStaticElements@FStaticMeshSceneProxy@@UEAAXPEAVFStaticPrimitiveDrawInterface@@@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 14 error LNK2001: unresolved external symbol "public: virtual void __cdecl FStaticMeshSceneProxy:rawDynamicElements(class FPrimitiveDrawInterface *,class FSceneView const *,unsigned int)" (?DrawDynamicElements@FStaticMeshSceneProxy@@UEAAXPEAVFPrimitiveDrawInterface@@PEBVFSceneView@@I@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 17 error LNK2001: unresolved external symbol "public: virtual struct FPrimitiveViewRelevance __cdecl FStaticMeshSceneProxy::GetViewRelevance(class FSceneView const *)" (?GetViewRelevance@FStaticMeshSceneProxy@@UEAA?AUFPrimitiveViewRelevance@@PEBVFSceneView@@@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 16 error LNK2001: unresolved external symbol "public: virtual int __cdecl FStaticMeshSceneProxy::GetLOD(class FSceneView const *)const " (?GetLOD@FStaticMeshSceneProxy@@UEBAHPEBVFSceneView@@@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 11 error LNK2001: unresolved external symbol "public: virtual bool __cdecl FStaticMeshSceneProxy::GetWireframeMeshElement(int,class FMaterialRenderProxy const *,unsigned char,struct FMeshBatch &)const " (?GetWireframeMeshElement@FStaticMeshSceneProxy@@UEBA_NHPEBVFMaterialRenderProxy@@EAEAUFMeshBatch@@@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 9 error LNK2001: unresolved external symbol "public: virtual bool __cdecl FStaticMeshSceneProxy::GetShadowMeshElement(int,unsigned char,struct FMeshBatch &)const " (?GetShadowMeshElement@FStaticMeshSceneProxy@@UEBA_NHEAEAUFMeshBatch@@@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 10 error LNK2001: unresolved external symbol "public: virtual bool __cdecl FStaticMeshSceneProxy::GetMeshElement(int,int,unsigned char,struct FMeshBatch &,bool,bool)const " (?GetMeshElement@FStaticMeshSceneProxy@@UEBA_NHHEAEAUFMeshBatch@@_N1@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 18 error LNK2001: unresolved external symbol "public: virtual bool __cdecl FStaticMeshSceneProxy::CanBeOccluded(void)const " (?CanBeOccluded@FStaticMeshSceneProxy@@UEBA_NXZ) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 12 error LNK2001: unresolved external symbol "protected: virtual void __cdecl FStaticMeshSceneProxy::SetIndexSource(int,int,struct FMeshBatch &,bool,bool)const " (?SetIndexSource@FStaticMeshSceneProxy@@MEBAXHHAEAUFMeshBatch@@_N1@Z) C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\HiglighttableStaticMeshComponent.cpp.obj MyProject
Error 21 error LNK1120: 13 unresolved externals C:\Users\i5\Documents\Unreal Projects\MyProject\Binaries\Win64\UE4Editor-MyProject.dll MyProject
Error 22 error : Failed to produce item: C:\Users\i5\Documents\Unreal Projects\MyProject\Binaries\Win64\UE4Editor-MyProject.dll C:\Users\i5\Documents\Unreal Projects\MyProject\Intermediate\ProjectFiles\ERROR MyProject
Comment
-
All those methods mentioned in the linker errors are not exported by FStaticMeshSceneProxy, which means you can't subclass it outside whatever module it's currently defined in, file a bug report on Answerhub. If you don't mind working with a source build of the engine you should be able to fix this in your engine source by inserting ENGINE_API into the class declaration like so:
Code:class ENGINE_API FStaticMeshSceneProxy : public FPrimitiveSceneProxy
Contact: enlight in #unrealengine IRC channel on Freenode, or @macagonator on Twitter
Comment
Comment