android — Ошибка при расширении класса C ++ (с использованием фреймворка cocos2d-x)

Итак, я следовал учебнику из книги для Android & игра для iOS я использую cocos2d-x v2.2 на OS X 10.8

Я столкнулся с проблемой при расширении CCSprite учебный класс. Всякий раз, когда я создаю объект из этого класса, проект перестает работать на Android. Затмение отказывается строить это. Я сузил проблему (как описано ниже), но я не знаю, как ее исправить.

GameSprite.h

#ifndef __GAMESPRITE_H__
#define __GAMESPRITE_H__
#include "cocos2d.h"
using namespace cocos2d;

class GameSprite : public CCSprite {
public:

...

GameSprite(void);
~GameSprite(void);

static GameSprite* gameSpriteWithFile (const char* pszFileName);
virtual void setPosition(const CCPoint &pos);
float radius();

};

#endif // __GAMESPRITE_H__

GameSprite.cpp

#include "GameSprite.h"
GameSprite::GameSprite(void) {
_vector = ccp(0,0);
}

GameSprite::~GameSprite(void) {

}

GameSprite* GameSprite::gameSpriteWithFile(const char* pszFileName) {
GameSprite* sprite = new GameSprite();
if (sprite && sprite->initWithFile(pszFileName)) {
sprite->autorelease();
return sprite;
}
CC_SAFE_DELETE(sprite);
return NULL;
}

...

Теперь по моему HelloWorld.cpp файл, я создаю экземпляр моего GameSprite Класс следующим образом:

Это заставляет Eclipse выдавать ошибку

GameSprite * player1;
player1 = GameSprite::gameSpriteWithFile("myPic.png");
player1->setPosition(ccp(_screenSize.width*0.5, player1->radius() * 2));
this->addChild(player1);

Это работает безупречно в iOS. Спрайт добавляется на экран в правильном положении. Но когда я пытаюсь построить этот проект для Android с помощью Eclipse, я получаю сообщение об ошибке, в котором говорится: «Ваш проект содержит ошибки. Пожалуйста, исправьте их перед запуском приложения».

Когда я удаляю этот кусок кода (выше) из моего HelloWorld.cpp файл, приложение работает на Android без проблем.

Насколько я понимаю, существует проблема с методом GameSprite :: gameSpriteWithFile в GameSprite.cpp файл. Но я не могу понять, в чем проблема и как я могу решить ее.

Любая помощь, ребята?

Спасибо

0

Решение

Я решил это благодаря simonc. Спасибо! 🙂 Я должен был добавить свой GameSprite.cpp класс к Android.mk файл. (JNI / hellocpp / Android.mk)

Затмение не смогло найти мой недавно созданный класс, следовательно, оно не создавало его.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]