私は、シミュレータ用にうまく構築するiOSプロジェクトを持っていますが、Generic Device用にビルドされたときや、Xcodeを通じて実際のデバイス上で実行しようとするとコンパイルエラーが発生します。注:実際のコンパイラエラー、リンカエラーまたは展開エラーではありません。エラーは、typedefの型が一致していない場合(つまり、別のSDKのヘッダーが含まれているか、異なるプリプロセッサ定義があるかのように)です。ターゲットデバイスを変更すると、どのコンパイラ設定が変更されますか?
私の質問は、Xcode UIでターゲットデバイスを変更したときにどのようなコンパイラ設定が変更され、どのような違いが表示されるのですか?プロジェクトの設定を見てターゲットデバイスを変更すると、差異は見えません。具体的には、展開ターゲットバージョンとSDKバージョンは変更されていません。
プロジェクトは、Xcode 7ではこれらのターゲットデバイスのいずれかを使用して正常にビルドされましたが、Xcode 8では使用できませんでした。これはXcodeに付属するSDKのバージョンに該当します。しかし、いくつかのターゲットデバイスで動作するためには、コンパイラの設定を変更する必要があります。私はそれが何をしているのかを見ることができれば、これは本当に簡単に修正するべきです!ここで
はコンパイルに失敗した(私のコードで)行です:
typedef void* IOSurfaceRef;
そして、ここではエラーメッセージです:
error: typedef redefinition with different types ('void *' vs 'struct __IOSurface *')
私は、エラーを修正助けを望んでいないに注意したりしてくださいそれが何をしようとしているかについてのアドバイス - 私はそれが良くないと知っています。ターゲットデバイスを切り替えることによってどのコンパイラ設定が変更されるのかを知りたいだけです。
エラーに関する実際の関連コードで質問を更新し、完全で正確な実際のエラーを投稿してください。 – rmaddy
ありがとう、それは合理的な要求です。しかし、私はエラーを修正するための助けをしたくない - 私はコンパイラの設定がターゲットデバイスを変更することによって変更されていることを尋ねていると、コードが$ HIGHLY_QUESTIONABLE_THINGを行う理由についての質問に脱走するだろう... –
それはあなたのtypedefまたはアップル/サードパーティのコードの中にありますか? – dan