cocos2d-x простой пример EditBox, ошибка неопределенной ссылки на

0

У меня есть проблема с попыткой добавить EditBox к примерной игре (созданной create_project.py), используя cocos2d-x 2.2.2, Fedora 20 и Eclipse Kepler,

Я добавил в HelloWorldScene.cpp

using namespace cocos2d::extension;
using namespace cocos2d::gui;

а также

CCEditBox *m_pEditName = CCEditBox::create(ccp(100,100),CCScale9Sprite::create("input_field.png"));
m_pEditName->setPosition(ccp(origin.x+visibleSize.width/2, origin.y+visibleSize.height*3/4));
m_pEditName->setFontColor(ccRED);
m_pEditName->setPlaceHolder("Name:");
m_pEditName->setMaxLength(8);
m_pEditName->setReturnType(kKeyboardReturnTypeDone);
addChild(m_pEditName);

Добавлено в мой HelloWorldScene.h

#include "cocos-ext.h"

И получил ошибку

fatal error: cocos-ext.h: No such file or directory

Я понял, что компилятор пытается найти файл.h в каталоге /usr/include или /usr/local/include, поэтому я добавил в свой файл makefile

INCLUDES += -I$(COCOS_ROOT)/extensions
INCLUDES += -I$(COCOS_ROOT)/external/chipmunk/include/chipmunk

и теперь я получаю еще одну ошибку, см. ниже мой make файл и ошибку

MAKEFILE

EXECUTABLE = thief

COCOS_ROOT = ../../..

INCLUDES = -I.. -I../Classes
INCLUDES += -I$(COCOS_ROOT)/extensions
INCLUDES += -I$(COCOS_ROOT)/external/chipmunk/include/chipmunk
#INCLUDES += -I$(COCOS_ROOT)/cocos2dx/kazmath/include
#INCLUDES += -I$(COCOS_ROOT)/cocos2dx/include
#INCLUDES += -I$(COCOS_ROOT)/cocos2dx
#INCLUDES += -I$(COCOS_ROOT)/external/
#INCLUDES += -I$(COCOS_ROOT)/CocosDenshion/include
#INCLUDES += -I$(COCOS_ROOT)/extensions/netwrok
#INCLUDES += -I$(COCOS_ROOT)/external/libwebsockets/win32/include


SOURCES = main.cpp \
        ../Classes/AppDelegate.cpp \
        ../Classes/HelloWorldScene.cpp


include $(COCOS_ROOT)/cocos2dx/proj.linux/cocos2dx.mk

SHAREDLIBS += -lcocos2d
COCOS_LIBS = $(LIB_DIR)/libcocos2d.so

$(TARGET): $(OBJECTS) $(STATICLIBS) $(COCOS_LIBS) $(CORE_MAKEFILE_LIST)
    @mkdir -p $(@D)
    $(LOG_LINK)$(CXX) $(CXXFLAGS) $(OBJECTS) -o $@ $(SHAREDLIBS) $(STATICLIBS)

$(OBJ_DIR)/%.o: %.cpp $(CORE_MAKEFILE_LIST)
    @mkdir -p $(@D)
    $(LOG_CXX)$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFINES) $(VISIBILITY) -c $< -o $@

$(OBJ_DIR)/%.o: ../%.cpp $(CORE_MAKEFILE_LIST)
    @mkdir -p $(@D)
    $(LOG_CXX)$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFINES) $(VISIBILITY) -c $< -o $@

Консольный журнал

02:56:14 **** Auto Build of configuration Default for project thief ****
make all 
 CXX obj/release/main.o
 CXX obj/release/Classes/AppDelegate.o
 CXX obj/release/Classes/HelloWorldScene.o
 LINK bin/release/thief
obj/release/Classes/AppDelegate.o: In function '_GLOBAL__sub_I_AppDelegate.cpp':
AppDelegate.cpp:(.text.startup+0x72): undefined reference to     cocos2d::gui::Margin::Margin()'
obj/release/Classes/HelloWorldScene.o: In function 'HelloWorld::init()':
HelloWorldScene.cpp:(.text+0x50f): undefined reference to     cocos2d::extension::CCScale9Sprite::create(char const*)'
HelloWorldScene.cpp:(.text+0x53f): undefined reference to     cocos2d::extension::CCEditBox::create(cocos2d::CCSize const&,     cocos2d::extension::CCScale9Sprite*, cocos2d::extension::CCScale9Sprite*,     cocos2d::extension::CCScale9Sprite*)'
HelloWorldScene.cpp:(.text+0x59c): undefined reference to     cocos2d::extension::CCEditBox::setFontColor(cocos2d::_ccColor3B const&)'
HelloWorldScene.cpp:(.text+0x5ab): undefined reference to     cocos2d::extension::CCEditBox::setPlaceHolder(char const*)'
HelloWorldScene.cpp:(.text+0x5b8): undefined reference to     cocos2d::extension::CCEditBox::setMaxLength(int)'
HelloWorldScene.cpp:(.text+0x5c5): undefined reference to     cocos2d::extension::CCEditBox::setReturnType(cocos2d::extension::KeyboardReturnType)'
obj/release/Classes/HelloWorldScene.o: In function '_GLOBAL__sub_I_HelloWorldScene.cpp':
HelloWorldScene.cpp:(.text.startup+0x72): undefined reference to     cocos2d::gui::Margin::Margin()'
collect2: error: ld returned 1 exit status
make: *** [bin/release/thief] Error 1

02:56:15 Build Finished (took 777ms)

Кто-нибудь знает, почему это происходит?

Для настройки моего cocos2d-x я использовал эту инструкцию Building Cocos2d-x для RHEL/Fedora/CentOS Linux

благодаря

  • 0
    Это сработало?
  • 0
    Нет, к сожалению, я еще не нашел решение. Сейчас я работаю над Windows из-за крайнего срока и постараюсь исправить его после истечения срока.
Теги:
makefile
fedora
cocos2d-x

1 ответ

1

Вам нужно добавить "расширения /CocoStudio/GUI/Layouts/UILayoutDefine.cpp" или удалить "cocos-ext.h" из вашего кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню