0

プロジェクトをビルドするときに、この奇妙な問題が発生しています。問題は次のとおりです。

私の友人と私はプロジェクトに取り組んでおり、まったく同じxcode、cocos2d、box2dバージョンを使用しています。彼のプロジェクトは正常にコンパイル(ビルド)されますが、私の場合は次のエラーが発生します:cassertファイルが見つかりません。

私は彼のxcode.projectのコピーを取りましたが、何の問題もありませんでした。

このコードが私が言おうとしていることをよりよく要約していることを願っています:

GameLayer.h
#import bla bla //the usual required files
@class myOwnClass1;
@class myOwnClass2;

myOwnClass1 *test1;
myOwnClass2 *test2;

今、私はGameLayer.hどちらかmyOwnClass1.hまたはmyOwnClass2.hを使用して含めたいの#importですが、それは私にエラーを与えるでしょう!@class GameLayer;何の問題もなかったら。

問題は、私の友人のプロジェクトで、彼#importがエラーなしで実行していることです。これは非常に奇妙です(少なくとも私にとっては)

助言?

PSに変更する.m.mm解決することはわかっていますが、友人のプロジェクトでは、彼は.m

4

3 に答える 3

1

あなたのプロジェクトとあなたの友人のプロジェクトの間でコンパイラ設定の不一致があると思います。

つまりcassert、C++ヘッダーファイルです。それをコンパイルするには、間違いなくC++コンパイラが必要です。

さて、私の推測では、あなたの友人のプロジェクトでは、GameLayer.mファイルは拡張子が付いていますがC++ファイルとしてマークされています.m

これを確認するには、プロジェクト(および友人)のproject.pbxprojファイルをテキストエディターで開き、GameLayer.mファイルを探します。この種のエントリが表示されます。

    347F5D94158BA4840058BC21 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };

ご覧のとおり、lastKnownFileTypeキーにはsourcecode.c.objc次のように書かれています。これは、Objective-Cファイルを識別します。が表示されている場合sourcecode.cpp.objcpp、それは客観的なC++を意味します。

これがそれを明確にするのに役立つことを願っています。

于 2012-12-18T09:24:29.427 に答える
0

何らかの理由で、新しいプロジェクトを最初から作成することで問題が解決したことが判明しました。他の誰かが別の意見を持っていない限り、今のところこれを正解としてマークします。

于 2012-12-24T14:39:58.730 に答える
0

これが私が問題を修正した方法です。プロジェクトをクリーンアップして再作成することは、私にとって良い考えではなかったようです。

この問題についてはWeb上にいくつかの回答がありますが、それぞれの回答は問題の解決に役立ちませんでした。1つはSOにあります

cassertファイルが見つかりませんが、Box2dテンプレートを使用しており、もう1つはcocos2dにあります-iphoneフォーラム、

http://www.cocos2d-iphone.org/forums/topic/cannot-include-box2d-cassert-file-not-found-despite-every-file-being-mm/

2つの提案を組み合わせると、私にとってはうまくいきました-

  1. すべての名前を.mから.mmに変更します(cocos2dまたはbox2dファイルではなく、プロジェクトファイルのみ)。
  2. 各ファイルの右側のペインで、[タイプ]オプションが[デフォルト-ObjectiveC++ソース]に設定されていることを確認してください</li>

特に私には別の問題がありましたが、あなたにとっては問題ではないかもしれません。私はCCLabelTTFに次の署名を使用していました

CCLabelTTF *title = [CCLabelTTF labelWithString:@"Hello" dimensions:CGSizeMake(720.0f, 880.0f) alignment:UITextAlignmentLeft fontName:@"Arial" fontSize:34];

これは非推奨であり、至る所でエラーが発生しました。私は現在、次のわずかに変更されたバージョンを使用しており、エラーが修正されています-

CCLabelTTF *title = [CCLabelTTF labelWithString:@"Hello" dimensions:CGSizeMake(720.0f, 880.0f) hAlignment:kCCTextAlignmentRight fontName:@"Arial" fontSize:34];

この修正に関する私の最新の記事は、次の場所にあります-http: //indiangamer.com/how-i-fixed-the-cocos2d-box2d-include-file-not-found-error/

于 2013-12-18T11:55:15.107 に答える