Frage

Ich habe ein Projekt für iPhone konfiguriert für ARMv6 und ARMv7-Architekturen zu kompilieren. Und ich brauche einen Code ausschließen aus für ARMv6 Architektur kompilieren, weil es Runtime-Absturz auf dem Gerät verursacht (schlechte Anweisung Ausnahme).

Gibt es eine Definition für ARMv6 / ARMv7 Kompilation Wege (wie "_DEBUG")?

War es hilfreich?

Lösung

Zunächst einmal, Sie müssen nicht, sie zu verhindern, dass Compilieren , müssen Sie sie verhindern, ausgeführt wird. Der Absturz ist zur Laufzeit, nach allem, nicht der Kompilierung.

sagte, dass der einfachste Weg, dies zu tun ist, zwei Codepfade zu haben, und kompiliert den entsprechenden Abschnitt basierend auf Architektur:

#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

Andere Tipps

Eine Abhilfe könnte alle die ARMv6-nur-Quellen in ein Teilprojekt zu sammeln und sich als eine statische Bibliothek kompilieren, verknüpfen Sie dann die Bibliothek in der Fett-Anwendung.

Man kann auch zusätzliche Build Flags pro Quelldatei in Xcode angeben, aber ich bin nicht vertraut mit der Syntax oder was sonst erforderlich wäre, um im wesentlichen einen Flag zurückgesetzt bereits emittieren (zB auf dem Flag Kompilieren unter ARMv7 angeben.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top