1

初めての投稿とiOSの初心者ですが、過去2週間、ワークスペース/コンパイル/ライブラリの問題に苦しんでいます。学習の冒険が好きなのに、うんざりしていて助けが必要です。XCode4.5を使用しています

Box2DCocos2DExamples.xcodeprojファイルを他の1つのプロジェクトファイル(test.xcodeproj)と一緒に自分のワークスペースファイルに統合しようとしています。これにより、オンラインで見つけたこのサンプルプロジェクトファイルからクールなスライス機能の一部を取得して、私のアプリ。単純なリクエストのようですね。Box2DCocos2DExamples.xcodeprojファイル全体をインポートし、同じワークスペース内から必要に応じてコードを変更できるように、ワークスペースプロジェクトをセットアップします。

私は次のことをしました:

  • アプリのビルド設定に適切なユーザーヘッダー検索パスを指定しました:/ Users / xx / Desktop / Code / Box2D-例-マスター、再帰はい、常にはいに設定されたユーザーパスを検索
  • Box2DCocos2DExamples.xcodeprojからライブラリファイルSlice.aを作成しましたが、「ソースのコンパイル」と「ヘッダーのコピー」の追加で混乱/問題が発生しています。これは、これらのファイルを追加するためのXcodeでの愚かな手動プロセスのようです。 「.m」のようなものをフィルタリングして、すべてのファイルを選択しない束を選択するので、実際に大幅に異なる数の.hファイルと.mファイルを取得するまで、ファイルを繰り返し追加し続けます。Box2DおよびCocos2Dパッケージからこれらすべての.mおよび.hファイル(100を超える)を追加しているので、これはちょっとばかげているように感じますが、「リンカーエラー」および「不明なシンボルi386」エラーメッセージが表示されますこれらのファイルが必要な場合...より良い方法はありますか?
  • さまざまなスキーム設定を試してみて、アプリのスキームのビルドターゲット内にライブラリ(slice.a)を追加したことを確認しました。Box2DCocos2DExamples.xcodeprojを、ライブラリ(slice.a)とともにアプリの追加のビルドターゲットとして追加できるのはなぜですか?この種の目的でライブラリファイルを使用しないようにする方法はありますか?
  • ライブラリ(slice.a)ファイルのビルド設定をSkip Install=yesに設定しました

さて、私の主な問題と理解の欠如は、ライブラリのコンパイルソースとコピーヘッダーを取り巻くものであり、アプリファイルからファンキーなことをしていて、 Box2DCocos2DExamples.xcodeprojファイル。これはほんの小さなサンプルであり、他のプロジェクトのクラスを参照しているコメントされていない部分だけです。CCDirector.mをライブラリに追加することで、これらのリンカーエラーを解決できました。

// Try to use CADisplayLink director
// if it fails (SDK < 3.1) use the default director
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
    [CCDirector setDirectorType:kCCDirectorTypeDefault];

CCDirector *director = [CCDirector sharedDirector];

追加されたソースファイルによってエラーメッセージは多少異なりますが、ライブラリ(slice.a)ファイル内のソースファイルの適切な組み合わせを理解してすべてを解決できないようで、リンクを確実に通過しませんコンパイルの段階。

これが私が受け取るエラーメッセージのサンプルです:

_ccRemoveHDSuffixFromFile "、参照元:-[CCTextureCache addImageAsync:target:selector:] in libSlice.a(CCTextureCache.o)-[CCTextureCache addImage:] in libSlice.a(CCTextureCache.o)-[CCTextureCache(PVRSupport)addPVRTCImage:bpp: hasAlpha:width:] in libSlice.a(CCTextureCache.o)-[CCTextureCache(PVRSupport)addPVRImage:] in libSlice.a(CCTextureCache.o) "_ccpLength"、参照元:-[CCLayerGradient updateColor] in libSlice.a(CCLayer .o) "_cocos2dVersion"、参照元:-[CCDirector init] in libSlice.a(CCDirector.o) "_gluLookAt"、参照元:-[CCDirectorIOS setProjection:] in libSlice.a(CCDirectorIOS.o)-[CCCamera Locate ] in libSlice.a(CCCamera.o)-[CCGridBase set3DProjection] in libSlice.a(CCGrid.o) "_gluPerspective "、参照元:-[CCDirectorIOS setProjection:] in libSlice.a(CCDirectorIOS.o)-[CCGridBase set3DProjection] in libSlice.a(CCGrid.o)ld:アーキテクチャi386のシンボルが見つかりませんclang:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しを確認するには-vを使用してください)

しばらくの間、ライブラリファイルのビルドフェーズに.mファイルを1つずつ入念に追加して、表示されたエラーに対処していましたが、時間がかかりすぎて正しい方向に進んでいませんでした。私がしていることを行うための明白な、またはさらに(一般的な)簡単な方法が欠けています。

私はたくさんのことを言ったことを知っています、そして私は謝罪します、しかし私は主に私が抱えている問題を解決するのに役立つことを願って、コンパイル、図書館のリンクなどについての洞察を探しています。ここで深い理解を得たいと思っているので、XCodeの仕組みに関する入力は大歓迎です。

よろしくお願いします!

4

1 に答える 1

0

私はこの回避策のファンではありませんが、ここから先に進むことに決めたので、投稿することにしました。コンセプトはシンプルですが、必ずしもスケーラブルであるとは限らないため、最終的にはより良いものを考え出す必要があります. ヘルプ!

Box2D/Cocos2D または私の場合 (Box2dCocos2DExamples.xcodeproj) をライブラリとしてアプリに追加しようとするのではなく、Box2dCocos2D.xcodeproj ファイルを含む新しいワークスペースにアプリをライブラリとして追加することにしました。次に、アプリのソース ファイルをこの新しいワークスペースに追加する方が簡単であることに気付きました。ワークスペースの appDelegate ファイルを再配置することから始めて、そこから始めます。これはうまく機能していますが、ライブラリファイルの追加/作成をあきらめたからです:(

于 2013-01-26T02:55:36.290 に答える