1

コードが /repos1/clib にある C ライブラリがあります。/repos2/proj にある iOS プロジェクトにコピーする clib.a (シミュレーターのデバッグ ビルドを含む) を作成するために、最新の iOS SDK を使用してコマンド ラインからビルドします。

私はこのセットアップを数年間使用しています。古い C ライブラリは非常にまれにデバッグが必要になる場合がありましたが、Xcode がプロジェクトの外部 (repos1 内) にあるライブラリ コードに、セットアップを行うことなく単純にステップ インしたという事実に満足しました。しかし、これは Xcode の数バージョン前までのことでした。いつ変更されたのか正確にはわかりません-おそらくgccからllvmに移動したときですか?-Cコードをデバッグする必要はほとんどありませんでしたが、しばらくの間、iOSプロジェクトからCライブラリをデバッグしようとすると逆アセンブルになるだけです(少なくともCファイル名と行番号への参照を含む)。数回デバッグする必要があるため、非常に不便です (C コードを含む一時プロジェクトを作成します)。

では、なぜ以前は機能していて、現在は機能していないのか、何か考えはありますか? どこを見ればいいですか?それは私がCライブラリをビルドする方法かもしれません.llvmに同等のものがないgccに使用していたフラグがあったのかもしれません(関連する場合は、使用していた古いビルドコマンドを見つけて投稿できます)? 問題は Xcode にあり、ソースを探す場所を Xcode に伝える方法はありますか?

ありがとう!

編集: 明確にするために、C ライブラリをソースとして、または Xcode のサブプロジェクトとして追加できますが、範囲外の理由により、これはこの特定のプロジェクトには役立ちません。では、以前の Xcode バージョンと同じように機能するのでしょうか? そうでない場合でも、その理由を知ることは興味深いでしょう。

4

2 に答える 2

0

推奨されるアプローチは、iOS 用のライブラリ プロジェクトを Xcode で作成し (そのためのテンプレートがあります)、それをビルドしてそのプロジェクトをアプリに追加し、lib が依存関係であり、リンクされていることを確認することです。これを行う方法については、Web 上に多くのチュートリアルがあります。

その後、iOS が進化し、新しいアーキテクチャ (armv7s) が登場したら、両方のプロジェクトを更新するだけです。

于 2013-04-06T12:03:50.683 に答える
0

私は同じ問題に苦しんでいました。

ライブラリ/アプリケーション プロジェクトで、シンボル ストリッピングに関連するすべてのオプションをリセットし、アプリケーション プロジェクトをライブラリ プロジェクトと同じ truecrypt ドライブにコピーしようとしましたが、役に立ちませんでした。

私の場合、それはアプリ プロジェクトの問題であると思われました。ソースコードを使用して別のアプリプロジェクトで同じライブラリをデバッグできたので、それが手がかりになりました。

アプリ プロジェクトに同じライブラリの複数のバージョンがあり、ターゲット メンバーシップのみを設定して、どれを使用するかを選択しました。それが私のアプリプロジェクトに何らかの影響を与える可能性があるかどうかはわかりません。それにもかかわらず、すべてのライブラリを削除してアプリ プロジェクトに再度コピーした後、ソース コードにアクセスしてライブラリをデバッグできました。

于 2013-04-12T10:07:33.783 に答える