Hi guys!
When we package a project for Android in UE5.4.1 on Windows, the build is interrupted by an error.
[70/376] Compile [arm64] FMODAudioLinkInputClient.cpp (0:04.76 at +0:04)
In file included from C:/Gitlab-Runner/builds/xXQQrCzna/0/nakamoto/HS/HSClient/Plugins/FMODStudio/Source/FMODAudioLink/Private/FMODAudioLinkInputClient.cpp:1:
In file included from C:/Gitlab-Runner/builds/xXQQrCzna/0/nakamoto/HS/HSClient/Plugins/FMODStudio/Intermediate/Build/Android/a/UnrealGame/Development/FMODStudio/PCH.FMODStudio.h:3:
In file included from C:/Gitlab-Runner/builds/xXQQrCzna/0/nakamoto/HS/HSClient/Plugins/FMODStudio/Source/FMODStudio/Private/FMODStudioPrivatePCH.h:4:
In file included from Runtime/Core/Public/CoreMinimal.h:28:
In file included from Runtime/Core/Public/Misc/AssertionMacros.h:14:
C:/Program Files/Epic Games/UE_5.4/Engine/Source/Runtime/Core/Public/String/FormatStringSan.h(112,3): error: static_assert failed due to requirement ‘bFmtStrErr<UE::Core::Private::FormatStringSan::TAtArgPos<1>>’ “‘%l’ expects integral arg (eg. char, int, long, etc.)”
FMT_STR_ERR(StatusLNeedsIntegerArg, “‘%l’ expects integral arg (eg. char, int, long, etc.)”);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Program Files/Epic Games/UE_5.4/Engine/Source/Runtime/Core/Public/String/FormatStringSan.h(93,5): note: expanded from macro ‘FMT_STR_ERR’
static_assert(bFmtStrErr, Description);
^ ~~~~~~~~~~~
C:/Gitlab-Runner/builds/xXQQrCzna/0/nakamoto/HS/HSClient/Plugins/FMODStudio/Source/FMODAudioLink/Private/FMODAudioLinkInputClient.cpp(147,9): note: in instantiation of template class ‘UE::Core::Private::FormatStringSan::TPresentErr<15>::TErrMsg<UE::Core::Private::FormatStringSan::TAtArgPos<1>>’ requested here
UE_LOG(LogFMODAudioLink, Verbose, TEXT(“Sound Created: %s , Consumer = %” PRIu64 “.”), *sourceName, ConsumerPtr);
^
C:/Program Files/Epic Games/UE_5.4/Engine/Source/Runtime/Core/Public/Logging/LogMacros.h(240,3): note: expanded from macro ‘UE_LOG’
UE_PRIVATE_LOG(PREPROCESSOR_NOTHING, constexpr, CategoryName, Verbosity, Format, ##VA_ARGS)
^
C:/Program Files/Epic Games/UE_5.4/Engine/Source/Runtime/Core/Public/Logging/LogMacros.h(275,3): note: expanded from macro ‘UE_PRIVATE_LOG’
UE_VALIDATE_FORMAT_STRING(Format, ##VA_ARGS);
^
C:/Program Files/Epic Games/UE_5.4/Engine/Source/Runtime/Core/Public/String/FormatStringSan.h(20,36): note: expanded from macro ‘UE_VALIDATE_FORMAT_STRING’
#define UE_VALIDATE_FORMAT_STRING UE_CHECK_FORMAT_STRING
^
C:/Program Files/Epic Games/UE_5.4/Engine/Source/Runtime/Core/Public/String/FormatStringSan.h(12,10): note: expanded from macro ‘UE_CHECK_FORMAT_STRING’
(void) UE_FMT_STR_Status{};
^
C:/Program Files/Epic Games/UE_5.4/Engine/Source/Runtime/Core/Public/String/FormatStringSan.h(112,3): error: static_assert failed due to requirement ‘bFmtStrErr<UE::Core::Private::FormatStringSan::TAtArgPos<0>>’ “‘%l’ expects integral arg (eg. char, int, long, etc.)”
FMT_STR_ERR(StatusLNeedsIntegerArg, “‘%l’ expects integral arg (eg. char, int, long, etc.)”);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Program Files/Epic Games/UE_5.4/Engine/Source/Runtime/Core/Public/String/FormatStringSan.h(93,5): note: expanded from macro ‘FMT_STR_ERR’
static_assert(bFmtStrErr, Description);
^ ~~~~~~~~~~~
FMOD v2.03.01 is used during the build.
Build settings in Target.cs:
DefaultBuildSettings = BuildSettingsVersion.Latest;
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
If we pack the project with other settings, FMOD builds correctly, for example:
DefaultBuildSettings = BuildSettingsVersion.V4;
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;