1

XCode で開発され、バージョン cocos2d-1.0.1-x-0.13.0-beta に基づいて動作する Cocos2d-x プロジェクトがあります。

今度は、Marmalade (Windows PC で VS Express を使用) で動作させる必要がありますが、まったくの初心者です。プロジェクトをセットアップすることができ、ソース コードは問題なくコンパイルされますが、プロジェクトを起動すると、CCCallFuncO が呼び出されると不可解な例外が発生します。

DEFAULT: s3eDeviceHandleException: 1 0x00000000 0x00000000
Memory exception (11) attempting to access: 00000000
S3E runtime is not handling this exception
First-chance exception at 0x00000000 in s3e_simulator_debug.exe: 0xC0000005: Access violation.
Unhandled exception at 0x00000000 in s3e_simulator_debug.exe: 0xC0000005: Access violation reading location 0x00000000.

これは、クラス CCActionInstant 内、メソッド CCCallFuncO::execute 内の次の命令で発生します。

(m_pSelectorTarget->*m_pCallFuncO)(m_pObject);

関連するすべてのオブジェクトが正しく健全であると言える限り、XCode 内と Marmalade なしのまったく同じコードで完全に機能し、意味があることを証明しています。

この問題を引き起こす可能性のあるこれら 2 つの環境の違いは何ですか? マーマレードの経験のある方なら、何を探すべきかについての手がかりを教えていただけますか?

4

1 に答える 1

0

この問題を解決した方法を他の開発者に知らせるために、私は自分の質問に答えています。

マーマレード シミュレータの問題は、コードとは何の関係もないことが判明しました。私と同様の問題が発生した場合 - 同様に、マーマレード シミュレーターでアプリを実行しようとすると、非常に不特定の例外が発生することを意味します - 他のことを試す前に、マーマレード サブフォルダーを削除してプロジェクトを再生成することをお勧めします。 .mkb ファイルから。これにより、実際のコードと同期していない可能性のあるキャッシュとコンパイル済みのオブジェクトが削除されるようです。marmalade サブフォルダーを削除すると、コンパイラーはすべてを新たに再作成します。

于 2012-09-18T17:57:17.403 に答える