2

私はこれを行おうとしていますが、問題が発生しています。親プロジェクトは、子プロジェクトからクラスSettingsViewControllerにアクセスする必要があります。子プロジェクトパスをヘッダー検索パスに配置しました。すべて正常にコンパイルされますが、次のようなリンカーエラーが発生します。

未定義のシンボル: "_ OBJC_METACLASS _ $ _ SettingsViewController"、参照元:StatisticsViewController.oの_OBJC_METACLASS _ $ _ St​​atisticsViewController "_OBJC_CLASS _ $ _ SettingsViewController"、参照元:objc-class-ref-to-SettingsViewController in SelectionViewController.o _OBJC_CLASS _ $ _ St​​atisticシンボルが見つかりませんcollect2:ldが1つの終了ステータスを返しました

どうすればこれを修正できますか?

4

4 に答える 4

2

子プロジェクトは静的ライブラリだと思います。現在、親プロジェクトは子プロジェクトのヘッダーファイルを見つける方法を知っていますが(そうでない場合はコンパイルされません)、子プロジェクトのライブラリ(.a)ファイルにリンクする必要があることを知りません。

おそらく、ライブラリファイルをターゲット>{アプリ}>バイナリとライブラリのリンクに追加する必要があります。-ObjCさらに、おそらくリンカーフラグと場合によってはを追加する必要があり-all_loadます。

ネット上には多くの詳細な説明があります。たとえば、Xcodeを使用してiPhone静的ライブラリを構築します

アップデート:

静的ライブラリでない場合は、かなり奇妙なプロジェクト設定です。できる最善のことは、共有ファイル(.hと.m)を両方のプロジェクトに追加することです。その後、両方のプロジェクトで個別にコンパイルされます。共有ファイルが少ない場合は、これでうまくいくはずです。

しかし、とにかく静的ライブラリでプロジェクトセットアップを使用することをお勧めします。適切に設定すればうまく機能します。私はそれをうまく使っています。そして-私が前に言ったように-それを設定する方法についてネット上にいくつかの良い説明があります。

于 2010-12-25T10:38:00.233 に答える
0

フレームワークが欠落している可能性があります。しかし、あなたがここに投稿したものからは本当にわかりません。

于 2010-12-25T03:28:35.407 に答える
0

私はこれが非常に古いことを知っていますが、他の人にとって役立つかもしれません。

含まれているプロジェクトをコンパイルするには、「ビルドフェーズ」のターゲット依存関係に含まれているプロジェクトを設定する必要があります。また、含まれているプロジェクトの静的ライブラリを「ライブラリとバイナリをリンク」に追加する必要があります。

[ターゲット]->[ビルドフェーズ]をクリックして、これらを設定します。

于 2012-06-10T16:26:28.767 に答える
0

未定義の記号

Undefined symbolsリンカエラーです

1.ライブラリまたはフレームワークを追加したかどうかを確認します

Project editor -> select a target -> General -> Frameworks, Libraries, and Embedded Content(Linked Frameworks and Libraries)
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries

2.Objective-CのSwiftコードを使用しようとした場合

空の.swiftファイルをObjective-Cプロジェクトに追加します。Xcodeが要求したら、[作成]を押しますBridging Header

于 2019-08-17T17:09:48.620 に答える