C++ におけるマルチデバイス アプリケーションについての考慮事項

提供: RAD Studio
移動先: 案内検索

マルチデバイス アプリケーションについての考慮事項 への移動

macOS でのスタック アラインメントの問題

macOS アプリケーションの場合は、すべてのメモリ データを 16 バイト境界にスタック整列させる必要があります。

使用可能な C/C++ ヘッダー ファイル

RAD Studio では、異なるターゲット プラットフォームごとに別個の C/C++ ヘッダー ファイルが用意されています。これらのファイルは、標準の検索パスである $(BDS)\include にあります。

SDK 検索パス内のヘッダー ファイルを使用するには、「[リモート パス項目の追加]または[リモート パス項目の編集]」を参照してください。たとえば、macOS では、コード例「OpenGL 多色四面体(C++)」で説明しているようにして、OpenGL ライブラリと GLUT ライブラリを追加できます。SDK は、[ツール|オプション...|環境オプション|SDK マネージャで管理することができます。

Windows の場合

32 ビット Windows および 64 ビット Windows 用のヘッダー ファイルは $(BDS)\include\windows にあります。


$(BDS)\include\windows 内のサブディレクトリ
説明
   \crtl C/C++ RTL ヘッダー ファイル(.h)。 詳細は、「C ランタイム ライブラリ リファレンス」を参照
   \fmx FireMonkey のマシン生成ヘッダー ファイル(.hpp)
   \rtl Delphi RTL のマシン生成ヘッダー ファイル(.hpp)
   \sdk Microsoft Windows SDK ヘッダー ファイル(.h)
   \vcl VCL のマシン生成ヘッダー ファイル(.h および .hpp)

macOS の場合

macOS 用のヘッダー ファイルは、開発用 PC 上の $(BDS)\include\osx にあります。


$(BDS)\include\osx 内のサブディレクトリ
説明
   \crtl C/C++ RTL ヘッダー ファイル(.h)。これらのファイルの中には、Mac 上の /usr/include ディレクトリにある C/C++ ヘッダー ファイルをインクルードするものがあります。詳細は、「macOS C RTL」を参照
   \fmx FireMonkey のマシン生成ヘッダー ファイル(.hpp)
   \rtl Delphi RTL のマシン生成ヘッダー ファイル(.hpp)

iOS の場合

iOS 用のヘッダー ファイルは、開発用 PC 上の $(BDS)\include\ios にあります。


$(BDS)\include\ios 内のサブディレクトリ
説明
   \crtl C/C++ RTL ヘッダー ファイル(.h)。詳細は、「iOS C RTL」を参照
   \fmx FireMonkey のマシン生成ヘッダー ファイル(.hpp)
   \rtl Delphi RTL のマシン生成ヘッダー ファイル(.hpp)

Android の場合

Android 用のヘッダー ファイルは、開発用 PC 上の $(BDS)\include\android にあります。


$(BDS)\include\android 内のサブディレクトリ
説明
   \crtl C/C++ RTL ヘッダー ファイル(.h)。詳細は、「Android C RTL」を参照
   \fmx FireMonkey のマシン生成ヘッダー ファイル(.hpp)
   \rtl Delphi RTL のマシン生成ヘッダー ファイル(.hpp)

さまざまなプラットフォームでのフレームワークの使用

フレームワークの使用

macOS の場合

Mac 用のフレームワークに関連する BCCOSX と XLINK のオプションを次の表に示します。

ツール オプション 説明
BCCOSX、macOS 用 C++ コンパイラ --sysroot リンカが呼び出されるときに、このオプションは -Fr オプションに変換されます。
BCCOSX、macOS 用 C++ コンパイラ --framework リンカが呼び出されるときに、このオプションは -Ff オプションに変換されます。
XLINK - C++ クロスプラットフォーム リンカ -Fr 論理ルート ディレクトリの場所を指定します。 論理ルート ディレクトリは、ローカル(Windows)マシン上のディレクトリで、リモート(macOS)マシンのルートを表します。
XLINK - C++ クロスプラットフォーム リンカ -Fp リモート ライブラリのパスを指定します。-L オプションも参照。
XLINK - C++ クロスプラットフォーム リンカ -Ff 指定したフレームワークをリンクするようにリンカに指示します。詳細は、「--framework」を参照。

BCCOSXXLINK を Mac フレームワークにリンクする手順についての説明は、「--framework」を参照してください。

Mac フレームワークの詳細については、「macOS アプリケーション開発#Mac アプリケーションでのフレームワークの使用」を参照してください。

iOS と Android の場合

iOS と Android のフレームワークに関連する BCCIOSARM/BCCIOSARM64/BCCAARM と LD オプションを次の表に示します。

ツール オプション 説明
BCCIOSARM/BCCIOSARM64/BCCAARM - 32 ビットおよび 64 ビット iOS デバイス、Android 用 C++ コンパイラ -isysroot iOS SDK および Android NDK のルートを指定します。通常は %IOS_SDK_ROOT% または %ANDROID_NDK_ROOT% に設定されます。
BCCIOSARM/BCCIOSARM64 - 32 ビットおよび 64 ビット iOS デバイス用 C++ コンパイラ -F フレームワーク パスを指定します。通常は %IOS_SDK_ROOT%\System\Library\Frameworks" に設定されます。
LD - BCCIOSARM/BCCIOSARM64 32 ビットおよび 64 ビット iOS デバイス用 -syslibroot 論理ルート ディレクトリの場所を指定します。論理ルート ディレクトリとは、iOS SDK のルートを表す開発用 PC(Windows)上のディレクトリです。
LD - BCCAARM Android 用 --sysroot 論理ルート ディレクトリの場所を指定します。論理ルート ディレクトリとは、Android NDK のルートを表す開発用 PC(Windows)上のディレクトリです。
LD -framework リンクするフレームワークを指定します。たとえば、-framework Foundation と指定すると、アプリケーションが Foundation フレームワークにリンクされます。

IDE の[プロジェクト|オプション...|C++ コンパイラ|ディレクトリと条件定義では、[フレームワーク ルート ディレクトリ]プロジェクト オプションを使用して、フレームワークのインクルード パスに追加するディレクトリを指定することができます。

macOS および iOS での文字列リテラル char16_t と wchar_t

macOS および iOS では、char16_t は、wchar_t と等価ではありません(Windows では等価です):

  • Windows では、wchar_tchar16_t は両方とも 2 バイト文字です。
  • ところが、macOS、iOS、Android では wchar_t は 4 バイト文字です。

このため、UTF-16 の定数文字列を宣言するには、Windows では Lu のいずれかの接頭辞を使用しますが、macOS、iOS、Android では u 接頭辞を使用します。

Windows の例:

UnicodeString(L"Text"), UnicodeString(u"Text")

macOS、iOS、Android の例:

UnicodeString(u"Text")

ただし、macOS、iOS、Android で文字列リテラルに L 接頭辞を使用しても間違いではありません。 その場合は、UTF-32 の定数文字列が UTF-16 の文字列に変換されます。

互換性のためには、プラットフォームに応じて L または u の接頭辞が付加される定数文字列を記述する _D マクロを使用します。以下に例を示します。

UnicodeString(_D("Text"))

モバイル プラットフォームについての詳細は、「文字列リテラルに関するリンカの警告の解決」を参照してください。

関連トピック

関連項目