vas Tech undefined reference to `GameLayer::GameLayer()
Posts 8
Added by vas Tech 10 months ago

Plz help me i m porting game in android but i m geting error in eclipse "undefined reference to `GameLayer::~GameLayer()'" in HelloWorld class which is inherited from GameLayer

E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/obj/local/armeabi/objs-debug/game_logic/HelloWorldScene.o: In function `HelloWorld':
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:27: undefined reference to `GameLayer::GameLayer()'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:27: undefined reference to `GameLayer::GameLayer()'
make: Leaving directory `/cygdrive/e/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/obj/local/armeabi/objs-debug/game_logic/HelloWorldScene.o: In function `HelloWorld::init()':
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:55: undefined reference to `GameLayer::init()'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:61: undefined reference to `WorldByEditor::WorldByEditor()'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:62: undefined reference to `WorldByEditor::init()'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/obj/local/armeabi/objs-debug/game_logic/HelloWorldScene.o: In function `HelloWorld::addNewSpriteWithCoords(cocos2d::CCPoint, int)':

E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/obj/local/armeabi/objs-debug/game_logic/HelloWorldScene.o: In function `HelloWorld::draw()':
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:157: undefined reference to `glDisable'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:158: undefined reference to `glDisableClientState'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:159: undefined reference to `glDisableClientState'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:163: undefined reference to `glEnable'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:164: undefined reference to `glEnableClientState'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:165: undefined reference to `glEnableClientState'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:169: undefined reference to `glEnable'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:170: undefined reference to `glColor4ub'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:171: undefined reference to `glLineWidth'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/obj/local/armeabi/objs-debug/game_logic/HelloWorldScene.o: In function `~HelloWorld':
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:481: undefined reference to `GameLayer::~GameLayer()'
E:/Acocos2d-x/cocos2d-1.0.1-x-0.11.0/MyBilliard/android/jni/../../Classes/HelloWorldScene.cpp:481: undefined reference to `GameLayer::~GameLayer()'

My header file HelloWorldScene.h
#pragma once

// When you import this file, you import all the cocos2d classes
#include "cocos2d.h"

#include "Layer/GameLayer/GameLayer.h"
//#include "MyContactListener.h"
#include "b2dContectList/ContectListener.h"//remove
#include "GLES-Render.h"
#include <Box2D/Box2D.h>
#include "Layer/Level1/Ball.h"
#include "Constants.h"

class ContectListener;//remove

using namespace cocos2d;

class HelloWorld : public GameLayer {

public:

WorldByEditor *billiardWorld;  
HelloWorld();
virtual ~HelloWorld();
// returns a Scene that contains the HelloWorld as the only child
static CCScene* scene();
virtual void init();

};
in my HelloWorldScene.cpp

HelloWorld::HelloWorld()////////////////////////////////////////////////undefined reference to `GameLayer::~GameLayer()' {
GameLayer LAYER=new GameLayer();

screenSize = CCDirector::sharedDirector()->getWinSize();
cocos2d::CCSprite *background= CCSprite::spriteWithFile("background.png");
background->setAnchorPoint(CCPoint(0,0));
background->setPosition(CCPoint(0,0));
addChild(background,-2);
}

CCScene* HelloWorld::scene() {
//'scene' is an autorelease object
CCScene *scene = new CCScene();

// add layer as a child to scene
CCLayer* layer = new HelloWorld();
scene->addChild(layer,2);
layer->release();
return scene;
}

void HelloWorld::init() {
//initialize superlayer
GameLayer::init();
//initialize some variable
setIsTouchEnabled(true);
setIsAccelerometerEnabled(true);
stricker=false;
//back ground
billiardWorld=new WorldByEditor();
billiardWorld->init();
addChild(billiardWorld,-2);
///set up stick
stick= CCSprite::spriteWithFile("Stick.png");
stick->setAnchorPoint(CCPoint(0,0.5f));
stick->setPosition(CCPoint(80, 0));
addChild(stick,1);
//setup main game
setupBallSprites(); {
unschedule(schedule_selector(HelloWorld::tick) );
//ball->destroyBodyInWorld(billiardWorld->_world);
delete billiardWorld->_world;
billiardWorld->_world = NULL;
}
//////////////////////////////////////////////////////////////////////////////////////

/////////////////////
setupPhysicsBodies();
m_bodyIndex = 0;
m_angle = 0.0f;
schedule(schedule_selector(HelloWorld::tick) ); 
}
HelloWorld::~HelloWorld()//////////////////////////////////////////////////////undefined reference to `GameLayer::~GameLayer()'
Igor Zavorotkin RE: undefined reference to `GameLayer::GameLayer()
Posts 141
Added by Igor Zavorotkin 10 months ago

Whenever you get "undefined reference" it's a linkage problem. It means you need to look into your Android.mk files to make sure you've added all libraries you need.

vas Tech RE: undefined reference to `GameLayer::GameLayer()
Posts 8
Added by vas Tech 10 months ago

Thank You Friend for fast Response But Problem in My C++ Game classes My Project Hirarchy is as
Android
Classes
Resources

Classes->HelloWorld.h
Classes->Layer->GameLayer->GameLayer.h

I have defined #include "Layer/GameLayer/GameLayer.h" in HelloWorldScene File

HelloWorld is inherited from GameLayer Class


(1-2/2)