2023/10/11_UE5.3_問題:SlateBasics.h(6)に問題。プラグインをパッケージ化すると失敗

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Slate\Public\SlateBasics.h(6): warning: Monolithic headers should not be used by this module. Please change it to explicitly include the headers it needs.

というワーニング。

SWidgetとGEngineのインクルードが失敗しているようなログが出る。

解決

プラグインのヘッダーにに下記を追加。

#include "Widgets/Text/STextBlock.h"

かなりエラーが減った。

後はGEngineの2つだけ。


#include "Engine/Engine.h"を入れたらUGameViewportClientのエラーが増えた。

#include "Engine/GameViewportClient.h"を追加したらパッケージ化成功。

 C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Slate\Public\SlateBasics.h(6)に問題があるみたいだから、そこのヘッダーを改めてインクルードする必要があったんだろう。


他にやったこと。ひょっとしたら必要かもしれない。

[ProjectDir]/[ProjectName]/Source/[ProjectName] ディレクトリの[ProjectName].build.cs ファイルの

// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

にした。


あとは

「ProjectName」.h ファイルに移動し、以下を追加

#include "SlateBasics.h"


uprojectをGenerateした



ログ


------ Building 1 action(s) started ------

[1/1] Compile [x64] Module.UMGToSlateLoadingScreen.cpp

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Public\LoadingScreenUserWidget.h(56): error C2065: 'STextBlock': 定義されていない識別子です。

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Public\LoadingScreenUserWidget.h(56): error C2923: 'TSharedPtr': 'STextBlock' は、パラメーター 'ObjectType' の有効な テンプレート 型引数ではありません

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Public\LoadingScreenUserWidget.h(56): note: 'STextBlock' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Public\LoadingScreenUserWidget.h(56): error C2976: 'TSharedPtr': 引数 テンプレート が少なすぎます

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Public\LoadingScreenUserWidget.h(56): error C2955: 'TSharedPtr': クラス テンプレート を使用するには テンプレート 引数リストが必要です

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Intermediate\Build\Win64\UnrealGame\Inc\UMGToSlateLoadingScreen\UHT\LoadingScreenUserWidget.gen.cpp(597): error C2512: 'TSharedPtr': クラス、構造体、共用体に既定のコンストラクターがありません。

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Slate\Public\SlateBasics.h(6): warning: Monolithic headers should not be used by this module. Please change it to explicitly include the headers it needs.

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(24): error C2512: 'TSharedPtr': クラス、構造体、共用体に既定のコンストラクターがありません。

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(299): error C2839: オーバーロードされた 'operator ->' の戻り値の型 'ObjectType *' が無効です。

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(299): error C2039: 'ForceVolatile': 'TSharedPtr' のメンバーではありません

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(302): error C2839: オーバーロードされた 'operator ->' の戻り値の型 'ObjectType *' が無効です。

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(302): error C2039: 'SetText': 'TSharedPtr' のメンバーではありません

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(517): error C2839: オーバーロードされた 'operator ->' の戻り値の型 'ObjectType *' が無効です。

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(517): error C2039: 'SetText': 'TSharedPtr' のメンバーではありません

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(672): error C2839: オーバーロードされた 'operator ->' の戻り値の型 'ObjectType *' が無効です。

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(672): error C2039: 'SetText': 'TSharedPtr' のメンバーではありません

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(675): error C2839: オーバーロードされた 'operator ->' の戻り値の型 'ObjectType *' が無効です。

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(675): error C2039: 'GetText': 'TSharedPtr' のメンバーではありません

C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h(716): note: 'TSharedPtr' の宣言を確認してください

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(943): error C2065: 'GEngine': 定義されていない識別子です。

C:\UMGToSlateLoadingScreen\HostProject\Plugins\UMGToSlateLoadingScreen\Source\UMGToSlateLoadingScreen\Private\LoadingScreenUserWidget.cpp(973): error C2065: 'GEngine': 定義されていない識別子です。