基于此链接条件编译( Delphi )CPUARM条件if对于模拟器应为false,对于设备应为true,问题是它对我不起作用。这是我的密码
{$IFDEF CPUARM} s := 'iOS device'; {$ELSE} s := 'iOS Simulator'; {$ENDIF}
p.s iOS模拟器在VMWare虚拟机中运行。
qaxu7uf21#
检查CPUARM是正确的解决方案。为模拟器编译的iOS二进制文件不是ARM,它们实际上是x86。只需确保使用{$IFDEF IOS} Package iOS代码:
CPUARM
{$IFDEF IOS}
{$IFDEF IOS} {$IFDEF CPUARM} s := 'iOS device'; {$ELSE} s := 'iOS Simulator'; {$ENDIF} {$ENDIF}
Delphi 在iOS设备上使用ARM编译器,但在iOS模拟器上使用x86编译器。Embarcadero的DocWiki上记录了可用的编译器条件:条件编译( Delphi )|预定义条件CPUARM由DCCIOSARM compiler(iOS设备)定义。CPU386和CPUX86由DCCIOS32 compiler(iOS模拟器)定义。查看XE6的DCCIOSARM.EXE和DCCIOS32.EXE可执行文件中实际存在的条件值可以确认:DCCIOSARM.EXE:
CPU386
CPUX86
**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
更新:从 Delphi 11.2开始,基于ARM的iOS模拟器现在可以通过新的DCCIOSSIMARM64编译器来支持,您可以使用IOSSIMULATOR条件来检查该编译器:
IOSSIMULATOR
{$IFDEF IOS} {$IFDEF CPUARM} {$IFDEF IOSSIMULATOR} s := 'iOS Simulator (ARM)'; {$ELSE} s := 'iOS device'; {$ENDIF} {$ELSE} s := 'iOS Simulator (x86)'; {$ENDIF} {$ENDIF}
pinkon5k2#
我找到了解决此问题的方法:我在项目-〉选项页面中为ALL Configuration - IOS Simulator Platform定义了一个ISSIM条件,然后我通过以下方式检查了它
ALL Configuration - IOS Simulator Platform
ISSIM
{$IFDEF ISSIM} s := 'iOS Simulator'; {$ELSE} s := 'iOS device'; {$ENDIF}
2条答案
按热度按时间qaxu7uf21#
检查
CPUARM
是正确的解决方案。为模拟器编译的iOS二进制文件不是ARM,它们实际上是x86。只需确保使用{$IFDEF IOS}
Package iOS代码:Delphi 在iOS设备上使用ARM编译器,但在iOS模拟器上使用x86编译器。
Embarcadero的DocWiki上记录了可用的编译器条件:
条件编译( Delphi )|预定义条件
CPUARM
由DCCIOSARM compiler(iOS设备)定义。CPU386
和CPUX86
由DCCIOS32 compiler(iOS模拟器)定义。查看XE6的DCCIOSARM.EXE和DCCIOS32.EXE可执行文件中实际存在的条件值可以确认:
DCCIOSARM.EXE:
DCCIOS32.EXE:
更新:从 Delphi 11.2开始,基于ARM的iOS模拟器现在可以通过新的DCCIOSSIMARM64编译器来支持,您可以使用
IOSSIMULATOR
条件来检查该编译器:pinkon5k2#
我找到了解决此问题的方法:
我在项目-〉选项页面中为
ALL Configuration - IOS Simulator Platform
定义了一个ISSIM
条件,然后我通过以下方式检查了它