7

このリンクに基づいて条件付きコンパイル (Delphi) CPUARM 条件付きの場合は、シミュレータの場合は false 、デバイスの場合は true である必要があります。問題は、それが機能していないことです。私は使っているDelphi XE6, iOS Simulator 7.1

これは私のコードです

    {$IFDEF CPUARM}
s := 'iOS device';
    {$ELSE}
s := 'iOS Simulator';
    {$ENDIF}

ps iOS シミュレーターは VMWare 仮想マシンで実行されています。

4

2 に答える 2

8

を確認するのCPUARMが正しい解決策です。シミュレータ用にコンパイルされた iOS バイナリは ARM ではなく、実際には x86 です。iOSコードを次のようにラップしてください{$IFDEF IOS}

{$IFDEF IOS}
  {$IFDEF CPUARM}
s := 'iOS device';
  {$ELSE}
s := 'iOS Simulator';
  {$ENDIF}
{$ENDIF}

Delphi は、iOS デバイスには ARM コンパイラを使用しますが、iOS シミュレータには x86 コンパイラを使用します。

利用可能なコンパイラ条件は、Embarcadero の DocWiki に記載されています。

条件付きコンパイル (Delphi) | 事前定義された条件

CPUARMDCCIOSARM コンパイラ(iOS デバイス)によって定義されます。

CPU386DCCIOS32 コンパイラ(iOS シミュレータ)CPUX86によって定義されます。

XE6 の DCCIOSARM.EXE および DCCIOS32.EXE 実行可能ファイルに物理的に存在する条件値を見ると、次のことが確認されます。

DCCIOSARM.EXE:

**CPUARM**
DCC
NEXTGEN
AUTOREFCOUNT
WEAKINSTREF
WEAKINTFREF
WEAKREF
EXTERNALLINKER
NATIVECODE
POSIX
POSIX32
MACOS
MACOS32
**IOS**
VER270
CONSOLE
BCB
PIC
UNICODE
CONDITIONALEXPRESSIONS

DCCIOS32.EXE:

**CPU386**
**CPUX86**
DCC
NEXTGEN
AUTOREFCOUNT
WEAKINSTREF
WEAKINTFREF
WEAKREF
NATIVECODE
POSIX
POSIX32
MACOS
MACOS32
**IOS**
ALIGN_STACK
UNDERSCOREIMPORTNAME
PC_MAPPED_EXCEPTIONS
ASSEMBLER
VER270
CONSOLE
BCB
PIC
UNICODE
CONDITIONALEXPRESSIONS
于 2014-05-22T15:17:57.400 に答える
-1

この問題の回避策を見つけました:

ISSIMProject->Options page で条件を定義し、ALL Configuration - IOS Simulator Platformこれを介して確認しました

    {$IFDEF ISSIM}
s := 'iOS Simulator';
    {$ELSE}
s := 'iOS device';
    {$ENDIF}

ここに画像の説明を入力

于 2014-05-22T10:03:42.353 に答える