我试图在虚幻引擎4中使用FJsonSerializer对Json进行反序列化,但遇到未解决的外部符号错误LNK2019。我了解LNK2019是什么,但是在这种情况下,我看不到是什么原因造成的。
此代码位于我的编辑器插件的EdModeTookit内。
我的代码
//JSON object for test
FString JsonString = "{'word': 'hello'}";
//JSON object to hold result
TSharedPtr<FJsonObject> JsonObject;
//JSON reader
const TSharedRef<TJsonReader<TCHAR>> Reader = TJsonReaderFactory<TCHAR>::Create(JsonString);
//Deserialize
if (FJsonSerializer::Deserialize(Reader, JsonObject)) {
UE_LOG(LogTemp, Log, TEXT("Deserialized JSON"));
}
编译时,出现38个LNK2019未解决的符号错误。这是前3个
严重性代码描述项目文件行抑制状态 错误LNK2019无法解析的外部符号“ __declspec(dllimport)public:__cdecl FJsonValueString :: FJsonValueString(class FString const&)”(__imp _ ?? 0FJsonValueString @@ QEAA @ AEBVFString @@@@ Z)在函数“ private:static bool __cdecl FJsonSerializer”中引用:Deserialize(TSharedRef,0> const&,struct FJsonSerializer :: StackState&)“(?? $ Deserialize @ _W @ FJsonSerializer @@ CA_NAEBV?$ TSharedRef @ V?$ TJsonReader @ _W @@ $ 0A @@@@ AEAUStackState @ 0 @@ Z)BayArea_I45 D:\ Doccuments \ Unreal Projects \ BayArea_I45 \ Intermediate \ ProjectFiles \ Module.TrafficSim.cpp.obj 1
严重性代码描述项目文件行抑制状态 错误LNK2019无法解析的外部符号“ __declspec(dllimport)public:virtual __cdecl FJsonValueString ::〜FJsonValueString(void)”(__imp _ ?? 1FJsonValueString @@ UEAA @ XZ)在函数“ public:virtual void * __cdecl FJsonValueString ::`标量删除中引用destructor'(未签名的int)”(?? _ GFJsonValueString @@ UEAAPEAXI @ Z)BayArea_I45 D:\ Doccuments \ Unreal Projects \ BayArea_I45 \ Intermediate \ ProjectFiles \ Module.TrafficSim.cpp.obj 1
严重性代码描述项目文件行抑制状态 错误LNK2019无法解析的外部符号“ __declspec(dllimport)public:__cdecl FJsonValueNumber :: FJsonValueNumber(double)”(__ imp _ ?? 0FJsonValueNumber @@ QEAA @ N @ Z)在函数“私有:静态布尔值__cdecl FJsonSerializer :: Deserialize(:TShared类)中引用” ,0> const&,struct FJsonSerializer :: StackState&)“(?? $ Deserialize @ _W @ FJsonSerializer @@ CA_NAEBV?$ TSharedRef @ V?$ TJsonReader @ _W @@ $ 0A @@@ AEAUStackState @ 0 @@ Z) BayArea_I45 D:\ Doccuments \ Unreal Projects \ BayArea_I45 \ Intermediate \ ProjectFiles \ Module.TrafficSim.cpp.obj 1
我真的不知道为什么会出错,因为该代码似乎与文档相符,而且我看到其他人声称已经成功使用了类似的代码。