UE4/C++: 4.18 以降発生するクリップボードのAPI仕様変更に伴う警告と必要な修正
状況
FGenericPlatformMisc::ClipboardCopy
または FGenericPlatformMisc::ClipboardPaste
を使用している場合、UE4-4.18 以降で API の仕様変更に伴う警告が翻訳時に発生する。
warning C4996: 'FGenericPlatformMisc::ClipboardCopy': FPlatformMisc::ClipboardCopy() has been superseded by FPlatformApplicationMisc::ClipboardCopy() Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
warning C4996: 'FGenericPlatformMisc::ClipboardPaste': FPlatformMisc::ClipboardPaste() has been superseded by FPlatformApplicationMisc::ClipboardPaste() Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
必要な修正
実装クラスが変更されただけではなく、変更先のヘッダーが CoreMinimal.h
に含まれていない点、加えて実装クラスが提供されるモジュールも独立しているためモジュールの追加も必要となる点に注意。
FGenericPlatformMisc
をFPlatformApplicationMisc
に置き換える。HAL/PlatformApplicationMisc.h
を include 追加。<project>.Build.cs
でApplicationCore
モジュールを追加。
something.cpp:
// ... #include "HAL/PlatformApplicationMisc.h" // ... // copy to clipboard FString hoge = TEXT( "hoge" ); // old FGenericPlatformMisc::ClipboardCopy( *hoge ); // new FPlatformApplicationMisc::ClipboardCopy( *hoge ); // ... // paste from clipboard FString hoge; // old FGenericPlatformMisc::ClipboardPaste( hoge ); // new FPlatformApplicationMisc::ClipboardPaste( hoge );
<project>.Build.cs
:
PublicDependencyModuleNames.AddRange ( new string[] { // ... , "ApplicationCore" // ... } );