2013-03-02 23 views
5

私は、ビューの1つにCocos2dを含む作業中のXcodeプロジェクトを持っています。私は今Box2dを追加する必要があります。私はcocos2d-2.xの-ARC-のiOSフォルダのlibsディレクトリにBOX2Dフォルダをドラッグすると、そのターゲットに追加しようとしたが、私は、コンパイル時に私はこれを取得しています:Box2dを既存のXcode/Cocos2dプロジェクトに追加する方法

(in b2BroadPhase.cpp) 
'Box2D/Collision/b2BroadPhase.h' file not found 

私はこの確信しています私が得る多くのエラーのほんの一番のものです。プロジェクトでコンパイルされたすべてのBox2dファイルを取得するには、どのような手順がありますか?

すべてのbox2dファイルは、cocos2d-libraryターゲットのCompile Sourcesにリストされています。

これはなぜ難しいのですか?他のライブラリと同じように機能しないのはなぜですか?

AND - 自分のプロジェクトのすべての.mを.mmにリネームする必要がありますか?これはたくさんのファイルを持つ大規模なxcodeプロジェクトなので、これはかなり不可能です。私はちょうど1つのビューでBox2dを使用しようとしています。

ルート= MyProject.xcodeproj、MyProjectとフォルダ、cocos2d-2:LearnCocos2D-

(Finderで)私のフォルダ構造によって与えられた答えに応じて


追加情報は、次のようになります。 x-ARC-iOSフォルダ cocos2d-2.x-ARC-iOSフォルダには、libsというフォルダがあります。など私はCocos2d、CocosDenshionとともに、BOX2Dフォルダを持っているフォルダ、インサイド

Xcodeで

私はプロジェクト(MyProjectの) と2つのターゲット(cocos2d-ライブラリ、MyProjectの)を持っている 「ヘッダ検索パス」のためにあります。プロジェクトとターゲットの両方。どちらを設定しますか?それは再帰的であるか非再帰的であるべきですか? Box2DフォルダをXcodeにドラッグすると、どのターゲットを設定するのですか?

私のプロジェクトファイルは、/ Users/me/Dropbox/iOS/MyProjectにあります。ヘッダー検索パスにはどのような情報を入力すればよいですか? /Users/me/Dropbox/iOS/MyProject/cocos2d-2.x-ARC-iOS/libsは動作していないようです。


別のアップデート - MyProjectとTARGETのヘッダ検索パスとして/Users/me/Dropbox/iOS/MyProject/cocos2d-2.x-ARC-iOS/libsはBOX2Dエラーを過ぎて私を得るように思われます。その後、私は 'cassert'ファイルにエラーが見つかりませんでした。それを過ぎて、View Controllerを変更することで、それは親であり、AppDelegateはあなたが提案したような "Objective-C++ Source"のFile Typeになりました。そして今...

NSObjCRuntime.h NSZone.h、NSObject(未修飾のIDが予想され、未知の型名 'NSString'など)にはかなりのエラーがあります。だから、Box2d/Cocos2dを使ってアプリを作るか、UIKitアプリを作るかのようです。両方を持つことを試みることは、完全な悪夢です。

答えて

7

最も簡単な解決策:すでに統合されたBox2Dで新しいプロジェクトを開始します。次に、ソースファイル&を追加します。私を信じて、それは容易になりません。 BOX2Dのために必要とされる私の頭の上から

カップルの事:検索パスとして

はBox2D.hファイルマイナス1レベルへのパスを使用します。 [OK]を、これはより良い説明が必要です:

If Box2D。hは、パスが/Projects/MyProject/libs

する必要があります検索...

/Projects/MyProject/libs/Box2Dである。これはBOX2Dの#include文は、常にBOX2Dパス含まれているため:

要するに
#include <Box2D/Common/b2Settings.h> 

、ヘッダ検索パスプラスの#includeを/#インポートパスは、ファイルへのフルパスを与える必要があります:

/Projects/MyProject/libs/Box2D/Common/b2Settings.h 

次に、検索パスがあるかどうかを確認するのは簡単ですightかどうか。

ヘッダー検索パスに検索パスを追加してください。他のライブラリと同じようにユーザーヘッダー検索パスの設定は行わないでください。これは、Box2Dには、角括弧<file.h>が含まれているためです。他のほとんどのライブラリは代わりに"file.h"を使用します。これらのライブラリでは、ユーザーヘッダー検索パスを使用してヘッダーファイルを検索します。

どうしてですか?コンパイラの設定。それらの多くがあります。エラーと警告は必ずしも明白ではありません。実際は、これが標準です。コードを記述して追加する方法はたくさんあります。ああ、あまりにも多くの異なる言語と言語バージョン。それは主に経験の問題です。レベル5以上ではより簡単になり、レベル10では単に迷惑になります。 :)

Box2Dを含むすべての.mファイルの名前を、直接(#import "Box2D.h")または間接的に(Box2Dを含むヘッダーを含む)変更する必要があります。 Prefix.pchファイルにBox2Dヘッダーを追加すると、それはすべてのファイルにBox2Dヘッダーを追加する場合と同じになりますので、私はあなたの状況ではそうしません。

Xcodeの.mファイルのファイルタイプを "Objective-C++"に設定すると、名前の変更を避けることができます。これは、それほど面倒ではありません。ヒント:このような状況では、ファイルの名前を変更するためのツールがあります。

+0

ありがとうございました。私は元の質問を編集して私の現在の試みを説明しようとしています。なぜなら私はまだ同じエラーが出ているからです。 – soleil

+0

私は上記の編集を行いました。私は検索パスが正しいかどうかをチェックする方法についても詳しく述べることができますか?私はあなたの反応のその部分を理解していませんでした。ありがとう! – soleil

+0

Box2Dに既に検索パスにBox2Dフォルダが含まれているため、マイナス1レベルです。 Box2Dがあなたのプロジェクトフォルダ "$(SRCROOT)"にある場合のように、 ""の間にセーチパスを入れるのを忘れないでください。 –

2

ヘッダ検索パスにこれを追加し、魔法の作業を参照してください。 $ [PROJECT_DIR]

0

あなたは、次のコンパイルエラーがあり:

  1. 「見つからないヘッダファイルを」:ソリューションですユーザーヘッダー検索パスを変更してBox2Dのディレクトリーを組み込みます。あなたのプロジェクトのディレクトリの下にBox2Dを置くと、次の環境変数$ {PROJECT_DIR}を使うことができます。 「再帰的」にチェックすることを忘れないでください。注:ヘッダーパスからBox2Dへのリンクをすべて削除します。たとえば:TestGame /ライブラリ/ BOX2D - > $ {} PROJECT_DIR/TestGame /ライブラリなど<cassert>として見られない

  2. CPPヘッダファイル...:拡張子にファイルの名前を変更* .mmの代わりに、* .Mますこの問題を解決します。

関連する問題