C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

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 に含まれていない点、加えて実装クラスが提供されるモジュールも独立しているためモジュールの追加も必要となる点に注意。

  1. FGenericPlatformMiscFPlatformApplicationMisc に置き換える。
  2. HAL/PlatformApplicationMisc.h を include 追加。
  3. <project>.Build.csApplicationCore モジュールを追加。

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"
        // ...
        }
      );