2013-06-23 59 views
4

尋找一些幫助,蔭新cocos2dx並具有使用的Eclipse IDEcocos2dx未定義參考

HelloWorld.cpp IAM內error.iam這樣:

_backgroundNode = CCParallaxNodeExtras::node(); 

,它給我未定義的參考錯誤,如下所示

未定義的引用'CCParallaxNodeExtras :: node()'

我CCParallaxNodeExtras.h頭文件的代碼如下它繼承CCParallaxNode

using namespace cocos2d; 
#include "cocos2d.h" 

class CCParallaxNodeExtras : public cocos2d::CCParallaxNode { 

    public : 

    // Need to provide a constructor 
    CCParallaxNodeExtras(); 

    // just to avoid ugly later cast and also for safety 
    static CCParallaxNodeExtras* node(); 

    // Facility method (it’s expected to have it soon in COCOS2DX) 
    void incrementOffset(CCPoint offset, CCNode* node); 
}; 

#endif 

這裏是CCParallaxNodeExtras.cpp

#include "CCParallaxNodeExtras.h" 
using namespace cocos2d; 

// Hack to access CCPointObject (which is not a public class) 
class CCPointObject : cocos2d::CCObject { 
    CC_SYNTHESIZE(cocos2d::CCPoint, m_tRatio, Ratio) 
    CC_SYNTHESIZE(cocos2d::CCPoint, m_tOffset, Offset) 
    CC_SYNTHESIZE(cocos2d::CCNode *, m_pChild, Child) // weak ref 
}; 

// Need to provide a constructor 
CCParallaxNodeExtras::CCParallaxNodeExtras() { 
    cocos2d::CCParallaxNode(); // call parent constructor 
} 

CCParallaxNodeExtras* CCParallaxNodeExtras::node() { 
    return new CCParallaxNodeExtras::CCParallaxNode(); 
} 

void CCParallaxNodeExtras::incrementOffset(cocos2d::CCPoint offset,CCNode *node){ 
    for(unsigned int i = 0; i < m_pParallaxArray->num; i++) { 
     CCPointObject *point = (CCPointObject *)m_pParallaxArray->arr[i]; 
     CCNode *curNode = point->getChild(); 
     if(curNode->isEqual(node)) { 
      point->setOffset(ccpAdd(point->getOffset(), offset)); 
      break; 
     } 
    } 
} 

請回復,我知道有很多代碼以上,但我想知道如果IAM做任何錯誤。任何幫助或suggesstion將不勝感激。謝謝!

的問候,穆罕默德 阿什拉夫塔希爾

回答

1

它看起來就像你在CCParallaxNodeExtras的定義::節點()方法有問題。 它應該是這樣的:

CCParallaxNodeExtras* CCParallaxNodeExtras::node() { 
    return new CCParallaxNodeExtras(); 
} 

我認爲應該解決的問題。讓我知道如果它不。

+0

謝謝4的答案,我試過這個,但仍然有相同的錯誤..! –

15

您必須將新cpp文件的引用添加到相應jni目錄的Android.mk中。

在我的情況下, 「Android.mk」 文件是在路線:{PROJ_DIRECTORY} \ proj.android \ JNI

編輯這個文件,並引用添加到您的CCParallaxNodeExtras CPP如下:

LOCAL_SRC_FILES部分,您目前擁有:

LOCAL_SRC_FILES := hellocpp/main.cpp \ 
        ../../Classes/AppDelegate.cpp \ 
        ../../Classes/HelloWorldScene.cpp 

現在包括CCParallasNodeExtras.cpp。它應該看起來如下:

LOCAL_SRC_FILES := hellocpp/main.cpp \ 
        ../../Classes/AppDelegate.cpp \ 
        ../../Classes/HelloWorldScene.cpp \ 
        ../../Classes/CCParallaxNodeExtras.cpp 

這應該解決問題。構建並運行。

+4

OR,只需添加 'CLASSES_FILES:= $(CLASSES_FILES:$(LOCAL_PATH)/%=%)' 再加入 'LOCAL_SRC_FILES + = $(CLASSES_FILES)' 決不會需要手動重新添加。 從這裏瞭解到:http://stackoverflow.com/a/20485971/1114457 –