5

ビューの1つにCocos2dを含む作業中のXcodeプロジェクトがあります。Box2dを追加する必要があります。Box2Dフォルダーをcocos2d-2.x-ARC-iOSフォルダーのlibsディレクトリーにドラッグしてそのターゲットに追加しようとしましたが、コンパイルすると次のようになります。

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

これは私が得る多くのエラーの最初のものにすぎないと確信しています。プロジェクトですべてのBox2dファイルをコンパイルするためにどのステップが欠けていますか?

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

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

AND-プロジェクト内のすべての.mの名前を.mmに変更する必要がありますか?これは多くのファイルを含む大規模なxcodeプロジェクトであるため、これはほとんど不可能です。1つのビューでBox2dを使用しようとしています。


LearnCocos2Dによって与えられた回答に応じた追加情報-

私のフォルダ構造(Finder内)は次のようになります。

ルート=MyProject.xcodeproj、MyProjectフォルダー、cocos2d-2.x-ARC-iOSフォルダーcocos2d-2.x-ARC-iOSフォルダーには、libsというフォルダーがあります。そのフォルダー内には、Cocos2d、CocosDenshionなどと一緒にBox2Dフォルダーがあります。

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

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


別の更新-MyProjectTARGETのヘッダー検索パスとしての/Users/me/Dropbox/iOS/MyProject/cocos2d-2.x-ARC-iOS/libsは、Box2Dエラーを通過したようです。次に、「cassert」ファイルが見つかりませんというエラーが発生しました。ビューコントローラ、その親、およびAppDelegateを、提案したように「Objective-C ++Source」のファイルタイプに変更することで、それを乗り越えました。そして今...

これで、NSObjCRuntime.h NSZone.h、NSObject(予期されたunqualified-id、不明なタイプ名'NSString'など)に多数のエラーが発生しました。つまり、Box2d / Cocos2dを使用してアプリを作成するか、UIKitアプリを作成するようです。両方を持っていることを試みることは完全な悪夢です。

4

3 に答える 3

8

最も簡単な解決策: Box2D が既に統合されている新しいプロジェクトを開始します。次に、ソース ファイルとリソースを追加します。私を信じてください、それは簡単にはなりません。

Box2D に必要な私の頭の上からのいくつかのこと:

検索パスとして、Box2D.h ファイルへのパスから 1 レベルを引いたものを使用します。わかりました、これにはより良い説明が必要です:

Box2D.h が入っている場合/Projects/MyProject/libs/Box2D

…検索パスは/Projects/MyProject/libs

これは、Box2D #include ステートメントに常に Box2D パスが含まれているためです。

#include <Box2D/Common/b2Settings.h>

要約すると、ヘッダー検索パスに #include/#import パスを追加すると、ファイルへのフル パスが得られます。

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

次に、検索パスが正しいかどうかを簡単に確認できます。

他のライブラリのように User Header Search Path 設定ではなく、必ずHeader Search Pathに検索パスを追加してください。これは、Box2D が角かっこインクルードを使用するためです<file.h>。他のほとんどのライブラリは"file.h"代わりに使用し、ユーザー ヘッダー検索パスを使用してヘッダー ファイルを見つけます。

なぜ難しいのですか?コンパイラの設定。それらはたくさんあります。エラーと警告は、常に明白であるとは限りません。実際、これが標準です。そして、コードを書いたり追加したりする方法はたくさんあります。ああ、非常に多くの異なる言語と言語バージョンも。ほとんど経験の問題です。レベル5以上になると楽になり、レベル10になるとただの迷惑。:)

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

Xcode で .m ファイルのファイル タイプを「Objective-C++」に設定することで、名前の変更を回避できます。これは、それ以上ではないにしても、同じくらい退屈です。ヒント: まさにこのような状況のために、大量のファイルの名前を変更するための優れたツールがあります。

于 2013-03-02T23:43:18.743 に答える
2

これをヘッダー検索パスに追加して、魔法の働きを確認してください: $[PROJECT_DIR]

于 2014-06-09T20:27:17.937 に答える