1

armv6 および armv7 アーキテクチャ用にコンパイルするように構成された iPhone 用のプロジェクトがあります。また、armv6 アーキテクチャのコンパイルから一部のコードを除外する必要があります。これは、デバイスでランタイム クラッシュが発生するためです (不良命令例外)。

armv6/armv7 コンパイル パス (「_DEBUG」など) の定義はありますか?

4

2 に答える 2

1

まず、それらがコンパイルされないようにする必要はありません。実行されないようにする必要があります。結局のところ、クラッシュは実行時であり、コンパイル時ではありません。

とはいえ、これを行う最も簡単な方法は、2 つのコード パスを用意し、アーキテクチャに基づいて適切なセクションをコンパイルすることです。

#if defined _ARM_ARCH_7
// your armv7 implementation goes here
#elif defined _ARM_ARCH_6
// your armv6 implementation goes here
#elif defined __i386__
// a simulator implementation could go here, if you had one
#else
#error Unknown Architecture!
#endif
于 2010-12-10T02:03:46.387 に答える
0

回避策の1つは、すべてのarmv6のみのソースをサブプロジェクトに収集し、それらを静的ライブラリとしてコンパイルしてから、そのライブラリをfatアプリケーションにリンクすることです。

Xcodeでソースファイルごとに追加のビルドフラグを指定することもできますが、構文や、すでに発行されているフラグを本質的に元に戻すために必要な他の機能(たとえば、armv7でのコンパイルを指定するフラグ)についてはよくわかりません。

于 2010-12-09T20:02:52.333 に答える