2016-04-09 2 views
4

私のメインプロジェクトでアクセスしたいファイルがあるxcodeプロジェクト内のサブプロジェクトを使用しています。私は自分のビルド設定の "ヘッダ検索パス"にこれらのファイルにディレクトリを置いたので、それらをインポートするとコンパイラのエラーは出ません。サブプロジェクトのビルド段階のコンパイルソースにサブプロジェクトファイルを追加しました。メインプロジェクトのファイルを、メインプロジェクトのコンパイルソースに追加しました。しかし、ビルドしようとすると、次のエラーが発生します。

Undefined symbols for architecture x86_64: 
"_OBJC_CLASS_$_LoginService", referenced from: 
objc-class-ref in GettingStartedViewController.o 
"_OBJC_CLASS_$_ProfileService", referenced from: 
objc-class-ref in GettingStartedViewController.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

これを修正するアイデアはありますか?メインプロジェクトのコンパイルソースにサブプロジェクトのファイルを追加する良い方法はありますか?これを行うと、実際にメインプロジェクトのコンパイルソースにファイルを追加せずに、xcodeに別のグループを作成します。
ありがとうございます!

+0

(Xcodeの7.3.1を使用して)ダブルチェックするテストケースを構築しましたか? –

+0

将来のユーザーのために:https://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorialこのチュートリアルに従ってください。このページに「依存関係」を追加する検索。 –

答えて

6

リンカは、これらのシンボルを見つけることができないため、不平を言っています。 LoginServiceとProfileServiceがサブプロジェクトのものであると仮定すると、それらのライブラリ(おそらくサブプロジェクトからビルドされたターゲット)をBuild Phasesの "Link Binary With Libraries"に追加する必要があります。

さらに、作成しているメインターゲットのスキームを再度確認し、それらのサブプロジェクトのターゲットが構築されていることを確認する必要があります(これは、左側のスキームダイアログ)。そうでない場合は、追加する必要があります。

これは、ライブラリをスキームに追加することです。 「暗黙的な依存関係の検索」を選択した場合は、何もする必要はありません。私はあなたのサブプロジェクトの目標は何を作成するのです

enter image description here

+0

HI Ben、お手伝いをしてくれてありがとう。これは機能しませんでした。サブプロジェクトを依存関係として追加する必要がありました。 - > https://www.raywenderlich.com/41377/creating-a-static-library-in-ios-tutorial –

+0

これを解決するにはいくつかの方法があります。サブプロジェクトの代わりに、多くの人が使用するワークスペースではなく、サブプロジェクトを使用している場合は、ビルド段階でターゲット依存関係を使用できます。さらに、「Find Implicit Dependencies」(デフォルトである必要があります)がある場合、またはスキーム内のビルドにターゲットを追加する場合も、同じことが行われます。私は何を意味するかを示すために写真を追加しました。より高度なプロジェクトがワークスペースを使用し、ターゲットの依存関係が機能しないため、この方法をターゲットの依存関係よりも優先します。 –

+0

クール!サブプロジェクトの一部であるイメージがメインプロジェクトに表示されないという問題に直面しています。 サブプロジェクトのViewControllerをメインプロジェクトにプッシュすると、黒い画面が表示されます。 –

関連する問題