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': 定義されていない識別子です。