crazytuzi/UnrealCSharp

UE5.3编译UnrealCSharp错误及解决方案

Closed this issue · 3 comments

问题1

报错:

[1/7] Compile [x64] Module.Generator.cpp
E:\Unreal Projects\Test\Plugins\UnrealCSharp\Source\Generator\Private\FBlueprintGenerator.cpp(8): fatal error C1083: 无法打开包括文件: “UMGEditor/Public/WidgetBlueprint.h”: No such file or directory

解决方案:
UnrealCSharp\Source\Generator\Private\FBlueprintGenerator.cpp: Line 8

	#include "Engine/UserDefinedStruct.h"
-	#include "UMGEditor/Public/WidgetBlueprint.h"
+	#include "WidgetBlueprint.h" // 这里应该用#if控制更好,不过我不会写x
	#include "FGeneratorCore.h"

问题2:

报错:

[3/7] Compile [x64] Module.UnrealCSharp.cpp
...... (此处省略 10 warnings)
E:\Unreal Projects\Test\Plugins\UnrealCSharp\Source\UnrealCSharp\Private\Reflection\Container\FMapHelper.cpp(213): error C4855: “/std:c++20”中已弃用通过 "[=]" 来隐式捕获 "this"
E:\Unreal Projects\Test\Plugins\UnrealCSharp\Source\UnrealCSharp\Private\Reflection\Container\FSetHelper.cpp(106): error C4855: “/std:c++20”中已弃用通过 "[=]" 来隐式捕获 "this"

解决方案:
UnrealCSharp\Private\Reflection\Container\FMapHelper.cpp: Line 211

			ElementPropertyDescriptor->Set(InValue, Data);
			
+	#if __cplusplus >= 202002L
+			ScriptMap->Rehash(ScriptMapLayout, [=, this](const void* Src)
+	#else
			ScriptMap->Rehash(ScriptMapLayout, [=](const void* Src)
+	#endif
			{
				return ElementPropertyDescriptor->GetValueTypeHash(Src);
			});

UnrealCSharp\Private\Reflection\Container\FSetHelper.cpp: Line 104

			KeyPropertyDescriptor->Set(InKey, Data);
			
+	#if __cplusplus >= 202002L
+			ScriptSet->Rehash(ScriptSetLayout, [=, this](const void* Src)
+	#else
			ScriptSet->Rehash(ScriptSetLayout, [=](const void* Src)
+	#endif
			{
				return KeyPropertyDescriptor->GetValueTypeHash(Src);
			});

刚接触UE,比较菜,可能上述内容有问题。

感谢反馈,昨天修改后在源码引擎编译通过了,今天再试下非源码引擎的情况

顺便问下,Mono环境需要什么版本的?我看用到了C:/Program Files/Mono/bin/mono.exe。
我目前用的Mono官网的最新Stable版本,加载不了.net7.0的程序集(比如System.Private.CoreLib.dll),导致UE崩溃了。

顺便问下,Mono环境需要什么版本的?我看用到了C:/Program Files/Mono/bin/mono.exe。 我目前用的Mono官网的最新Stable版本,加载不了.net7.0的程序集(比如System.Private.CoreLib.dll),导致UE崩溃了。

目前不需要Mono环境了,相关代码还没有删除,可以加QQ群,326576868,方便反馈问题