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

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

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

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

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

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

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

SDK 検索パス内のヘッダー ファイルを使用するには、「[リモート パス項目の追加]または[リモート パス項目の編集]」を参照してください。たとえば、OS X では、コード例「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)

OS X の場合

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


$(BDS)\include\osx 内のサブディレクトリ
説明
   \crtl C/C++ RTL ヘッダー ファイル(.h)。これらのファイルの中には、Mac 上の /usr/include ディレクトリにある C/C++ ヘッダー ファイルをインクルードするものがあります。詳細は、「OS X 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)

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

フレームワークの使用

OS X の場合

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

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

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

Mac フレームワークの詳細については、「OS X アプリケーション開発#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++ コンパイラ|ディレクトリと条件定義では、[フレームワーク ルート ディレクトリ]プロジェクト オプションを使用して、フレームワークのインクルード パスに追加するディレクトリを指定することができます。

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

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

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

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

Windows の例:

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

OS X、iOS、Android の例:

UnicodeString(u"Text")

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

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

UnicodeString(_D("Text"))

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

関連トピック

関連項目