如何修复';符号查找错误';在我不真实的项目中? 我试图写一个在虚幻引擎C++中的演员,它从渲染目标获得纹理数据。
我有一个演员班:如何修复';符号查找错误';在我不真实的项目中? 我试图写一个在虚幻引擎C++中的演员,它从渲染目标获得纹理数据。,c++,unreal-engine4,C++,Unreal Engine4,我有一个演员班: #include "RenderActor.h" #include "Engine.h" #include <stdio.h> // Sets default values ARenderActor::ARenderActor() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it
#include "RenderActor.h"
#include "Engine.h"
#include <stdio.h>
// Sets default values
ARenderActor::ARenderActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
UE_LOG(LogTemp, Warning, TEXT("Init RenderActor\n"));
}
// Called when the game starts or when spawned
void ARenderActor::BeginPlay()
{
Super::BeginPlay();
UE_LOG(LogTemp, Warning, TEXT("BeginPlay RenderActor\n"));
UTextureRenderTarget2D* target = GetTextureByName(TEXT("MyCanvas"));
}
// Called every frame
void ARenderActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
UTextureRenderTarget2D* GetTextureByName(const TCHAR* name)
{
return LoadObject<UTextureRenderTarget2D>(NULL, name, NULL, LOAD_None, NULL);
}
int ARenderActor::GetTextureData(UTextureRenderTarget2D* TextureRenderTarget ,void* out_ptr,int length)
{
int sx=TextureRenderTarget->SizeX,sy=TextureRenderTarget->SizeY;
TArray<FColor> SurfData;
FRenderTarget *renderTarget = TextureRenderTarget->GameThread_GetRenderTargetResource();
check((sx*sy*4)<=length);
renderTarget->ReadPixels(SurfData);
memcpy(out_ptr,reinterpret_cast<void*>(SurfData.GetData()),sx*sy*4);
return sx*sy*4;
}
现在我可以在Ubuntu18.04上编译它了,但是出现了一个运行时错误:
/home/starrabb1t/UnrealEngine/Engine/Binaries/Linux/UE4Editor: symbol lookup error: /home/starrabb1t/Documents/Unreal Projects/MemRender/Binaries/Linux/libUE4Editor-MemRender-7856.so: undefined symbol: _ZN12ARenderActor16GetTextureByNameEPKDs
我有一个带有渲染器对象的场景。我还在content directory的根目录中创建了render target MyCanvas。请仔细查看
GetTextureByName
函数的定义(实现)。。。它真的是Arenderator
类的成员吗?但我不确定它是否与“符号查找错误”有关。稍后我会检查是否有人试图“加载”函数Arenderator::GetTextureByName
。但由于您的模块没有无法找到符号的功能,因此符号查找失败并出现错误。您是对的,谢谢!
/home/starrabb1t/UnrealEngine/Engine/Binaries/Linux/UE4Editor: symbol lookup error: /home/starrabb1t/Documents/Unreal Projects/MemRender/Binaries/Linux/libUE4Editor-MemRender-7856.so: undefined symbol: _ZN12ARenderActor16GetTextureByNameEPKDs