0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Unreal Engine 5.5以降でAndroid向けビルドで発生するClangの不具合について

Last updated at Posted at 2025-06-12

Unreal Engine 5.5以降でAndroid向けにビルドを実行した際、例えば、次のようなエラーが出ました。(一部抜粋)

Program arguments: /Users/UserF/Library/Android/sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ "@/Users/UserF/Documents/Unreal Projects/MyProject/Plugins/MyPlugIn/Intermediate/Build/Android/a/UnrealGame/Development/MyPlugIn/FooSubsys.cpp.o.rsp"
[1900.01.01-00.00.00:000][741]UATHelper: Packaging (Android (ASTC)): 1.	/Users/UserF/Documents/Unreal Projects/MyProject/Plugins/MyPlugIn/Source/MyPlugIn/Private/FooSubsys.cpp:13:53: current parser token ';'
[1900.01.01-00.00.00:000][741]UATHelper: Packaging (Android (ASTC)): 2.	/Users/UserF/Documents/Unreal Projects/MyProject/Plugins/MyPlugIn/Source/MyPlugIn/Private/FooSubsys.cpp:9:79: parsing function body 'UFooSubsys::Initialize'
[1900.01.01-00.00.00:000][741]UATHelper: Packaging (Android (ASTC)): 3.	/Users/UserF/Documents/Unreal Projects/MyProject/Plugins/MyPlugIn/Source/MyPlugIn/Private/FooSubsys.cpp:11:79: in compound statement ('{}')

ソースコードは、次のようなものです。

#pragma once

#include "CoreMinimal.h"
#include "Subsystems/WorldSubsystem.h"
#include “BarData.h”
#include "MyWorldSettings.h"
#include "FooSubsys.generated.h"

/**
 * 
 */
UCLASS()
class FOOPIN_API UFooSubsys : public UWorldSubsystem
{
    GENERATED_BODY()

    public:
    UFooSubsys();
    ~ UFooSubsys();

    virtual void Initialize(FSubsystemCollectionBase& Collection);
    virtual void Deinitialize();
    UPROPERTY(EditAnywhere,BlueprintReadWrite)TObjectPtr<UBarData> BarData;
};
#include "FooSubsys.h"
UFooSubsys:: UFooSubsys(){
}
UFooSubsys::~ UFooSubsys(){
}
void UFooSubsys::Initialize(FSubsystemCollectionBase& Collection){
    if(UWorld* WorldOuter = Cast<UWorld>(GetOuter())){
        if (AMyWorldSettings* MyWorldSettings = Cast<AMyWorldSettings>(WorldOuter->GetWorldSettings()))
        {
            TSoftObjectPtr tmpRR = MyWorldSettings->BarData;
            BarData = tmpRR.Get();
            if(BarData == nullptr){
                BarData = tmpRR.LoadSynchronous();
            }
        }
    }
}
void UFooSubsys::Deinitialize(){
    
}

Unreal Engine 5.4までは、このようなエラーは出ませんでした。
また、開発PC向けのコンパイルやAndroid以外の他のプラットフォーム向けのビルドは正常に行われます。

エラーメッセージにはクラッシュレポートを送ってください(意訳)という文言が含まれており、この現象はおそらくClangのバグによるものと思われます。

このエラーは、関数内にTSoftObjectPtr型のローカル変数が宣言されると発生することがあるようです。
この現象は型をちゃんと指定することで回避できます。

#pragma once

#include "CoreMinimal.h"
#include "Subsystems/WorldSubsystem.h"
#include “BarData.h”
#include "MyWorldSettings.h"
#include "FooSubsys.generated.h"

/**
 * 
 */
UCLASS()
class FOOPIN_API UFooSubsys : public UWorldSubsystem
{
    GENERATED_BODY()

    public:
    UFooSubsys();
    ~ UFooSubsys();
    virtual void Initialize(FSubsystemCollectionBase& Collection);
    virtual void Deinitialize();
    UPROPERTY(EditAnywhere,BlueprintReadWrite)TObjectPtr<UBarData> BarData;
};
#include "FooSubsys.h"
UFooSubsys:: UFooSubsys(){
    
}
UFooSubsys::~ UFooSubsys(){
    
}
void UFooSubsys::Initialize(FSubsystemCollectionBase& Collection){
    if(UWorld* WorldOuter = Cast<UWorld>(GetOuter())){
        if (AMyWorldSettings* MyWorldSettings = Cast<AMyWorldSettings>(WorldOuter->GetWorldSettings()))
        {
            TSoftObjectPtr<UBarData> tmpRR = MyWorldSettings->BarData;
            BarData = tmpRR.Get();
            if(BarData == nullptr){
                BarData = tmpRR.LoadSynchronous();
            }
        }
    }
}
void UFooSubsys::Deinitialize(){
    
}

参考
https://github.com/llvm/llvm-project/issues/53598
 こちらのリンクの記事に、同じような現象を再現できるコードがあります。もしかすると、テンプレートを使用する際は注意する必要があるかもしれません。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?