C++ におけるマルチデバイス アプリケーションについての考慮事項
マルチデバイス アプリケーションについての考慮事項 への移動
目次
使用可能な C/C++ ヘッダー ファイル
RAD Studio では、異なるターゲット プラットフォームごとに別個の C/C++ ヘッダー ファイルが用意されています。これらのファイルは、標準の検索パスである $(BDS)\include
にあります。
ヘッダー ファイルを SDK 検索パスから使用するには、「[リモート パス項目の追加]または[リモート パス項目の編集] 」を参照してください。 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 内のサブディレクトリ
|
説明 |
---|---|
\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) |
さまざまなプラットフォームでのフレームワークの使用
プラットフォーム | Delphi RTL (C/C++ RTL とは異なる) |
FireMonkey | VCL |
---|---|---|---|
32 ビット Windows | |||
64 ビット Windows | |||
64 ビット iOS | |||
Android | |||
Linux |
フレームワークの使用
iOS と Android の場合
iOS と Android のフレームワークに関連する BCCIOSARM64/BCCAARM と LD オプションを、次の表示に示します:
ツール | オプション | 説明 |
---|---|---|
BCCIOSARM64 および BCCAARM 64 ビット iOS デバイス、および Android 用 C++ コンパイラ | -isysroot
|
iOS SDK および Android NDK のルートを指定します。通常は %IOS_SDK_ROOT% または %ANDROID_NDK_ROOT% に設定されます。
|
BCCIOSARM64 64 ビット iOS デバイス用 C++ コンパイラ | -F
|
フレームワーク パスを指定します。通常は %IOS_SDK_ROOT%\System\Library\Frameworks" に設定されます。
|
LD - BCCIOSARM64 64 ビット iOS デバイス | -syslibroot
|
論理ルート ディレクトリの場所を指定します。論理ルート ディレクトリとは、iOS SDK のルートを表す開発用 PC(Windows)上のディレクトリです。 |
LD - BCCAARM Android 用 | --sysroot
|
論理ルート ディレクトリの場所を指定します。論理ルート ディレクトリとは、Android NDK のルートを表す開発用 PC(Windows)上のディレクトリです。 |
LD | -framework
|
リンクするフレームワークを指定します。たとえば、-framework Foundation と指定すると、アプリケーションが Foundation フレームワークにリンクされます。
|
IDE の[プロジェクト|オプション...|C++ コンパイラ|ディレクトリと条件定義]では、[フレームワーク ルート ディレクトリ]プロジェクト オプションを使用して、フレームワークのインクルード パスに追加するディレクトリを指定することができます。
iOS および Android での文字列リテラル char16_t と wchar_t
macOS と iOS では、char16_t
は、wchar_t
と等価ではありません(Windows では等価です):
- Windows では、
wchar_t
とchar16_t
は両方とも 2 バイト文字です。 - ところが、iOS、Android では
wchar_t
は 4 バイト文字です。
このため、UTF-16 の定数文字列を宣言するには、Windows では L
か u
のいずれかの接頭辞を使用しますが、iOS、Android では u
接頭辞を使用します。
Windows の例:
UnicodeString(L"Text"), UnicodeString(u"Text")
iOS、Android の例:
UnicodeString(u"Text")
ただし、iOS、Android で文字列リテラルに L
接頭辞を使用しても間違いではありません。 その場合は、UTF-32 の定数文字列が UTF-16 の文字列に変換されます。
互換性のためには、プラットフォームに応じて L
または u
の接頭辞が付加される定数文字列を記述する _D
マクロを使用します。以下に例を示します。
UnicodeString(_D("Text"))
モバイル プラットフォームについての詳細は、「文字列リテラルに関するリンカの警告の解決」を参照してください。