Cocos2d-x in QtCreator on Ubuntu

I am trying to run a cocos2d-x v 2.2 helloword project in QtCreator. I use this project file based on this repository https://github.com/FlyingFishBird/cocos2d-x_2_0_4_templete_for_qtcreator/graphs/contributors

TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt CONFIG(debug, debug|release) { DESTDIR = bin/debug/ } CONFIG(release, debug|release) { DESTDIR = bin/release/ } RESOURCES = Resources.qrc SOURCES += Classes/AppDelegate.cpp \ Classes/HelloWorldScene.cpp \ proj.linux/main.cpp HEADERS +=Classes/AppDelegate.h \ Classes/HelloWorldScene.h COCOS2DX_ROOT = $$system(echo $COCOS2DX_ROOT) # set include path and depend path COCOS_INCLUDE_DEPEND_PATH += $$COCOS2DX_ROOT/cocos2dx \ $$COCOS2DX_ROOT/cocos2dx/include \ $$COCOS2DX_ROOT/cocos2dx/cocoa \ $$COCOS2DX_ROOT/cocos2dx/kazmath/include \ $$COCOS2DX_ROOT/cocos2dx/platform \ $$COCOS2DX_ROOT/CocosDenshion/include \ $$COCOS2DX_ROOT/extensions \ $$COCOS2DX_ROOT/external DEFINES += LINUX COCOS_INCLUDE_DEPEND_PATH += $$COCOS2DX_ROOT/cocos2dx/platform/linux LBITS = $$system(getconf LONG_BIT) contains(LBITS,64) { COCOS_INCLUDE_DEPEND_PATH += $$COCOS2DX_ROOT/platform/third_party/linux/include64 STATICLIBS_DIR += $$COCOS2DX_ROOT/cocos2dx/platform/third_party/linux/libraries/lib64 contains(COCOS2D-X_MODULES,CocosDenshion) { SHAREDLIBS_DIR += $$COCOS2DX_ROOT/CocosDenshion/third_party/fmod/lib64/api/lib SHAREDLIBS += -L$$SHAREDLIBS_DIR -lfmodex64 } DEFINES += NDEBUG SHAREDLIBS += -L$$COCOS2DX_ROOT/lib/linux/release -Wl,-rpath,$$COCOS2DX_ROOT/lib/linux/release STATICLIBS += $$COCOS2DX_ROOT/lib/linux/release/libbox2d.a SHAREDLIBS += -lcocos2d -lrt -lz SHAREDLIBS += -lfreetype -lcurl -lGL -lGLEW # SHAREDLIBS += -lxml2 -lpng -ljpep -ltif\f SHAREDLIBS += -lcocosdenshion SHAREDLIBS += -Wl,-rpath,$${SHAREDLIBS_DIR} SHAREDLIBS += -Wl,-rpath,$$STATICLIBS_DIR LIBS += $${STATICLIBS} LIBS += $${SHAREDLIBS} } INCLUDEPATH += $${COCOS_INCLUDE_DEPEND_PATH} DEPENDPATH += $${COCOS_INCLUDE_DEPEND_PATH} 

My main.cpp file:

  #include "../Classes/AppDelegate.h" #include "cocos2d.h" #include "CCEGLView.h" #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <string> #include "../Classes/AppDelegate.h" USING_NS_CC; // 500 is enough? #define MAXPATHLEN 500 int main(int argc, char **argv) { // get application path int length; char fullpath[MAXPATHLEN]; length = readlink("/proc/self/exe", fullpath, sizeof(fullpath)); fullpath[length] = '\0'; std::string resourcePath = fullpath; resourcePath = resourcePath.substr(0, resourcePath.find_last_of("/")); resourcePath += "/../../Resources/"; // create the application instance AppDelegate app; CCApplication::sharedApplication()->setResourceRootPath(resourcePath.c_str()); CCEGLView* eglView = CCEGLView::sharedOpenGLView(); eglView->setFrameSize(800, 480); return CCApplication::sharedApplication()->run(); } 

The project is correctly compiled without errors, but when the application starts, a window with a black screen appears and disappears the next moment. I think the run () method returns -1. The console output printed this for me:

 cocos2d-x debug info [Ready for GLSL] cocos2d-x debug info [Ready for OpenGL 2.0] 

I am trying to run my project on Ubuntu 12.04. Can anyone know what I'm doing wrong?

===== edit AppDelegate:

 #include "AppDelegate.h" #include "HelloWorldScene.h" USING_NS_CC; AppDelegate::AppDelegate() { } AppDelegate::~AppDelegate() { } bool AppDelegate::applicationDidFinishLaunching() { // initialize director CCDirector* pDirector = CCDirector::sharedDirector(); CCEGLView* pEGLView = CCEGLView::sharedOpenGLView(); pDirector->setOpenGLView(pEGLView); // turn on display FPS pDirector->setDisplayStats(true); // set FPS. the default value is 1.0/60 if you don't call this pDirector->setAnimationInterval(1.0 / 60); // create a scene. it an autorelease object CCScene *pScene = HelloWorld::scene(); // run pDirector->runWithScene(pScene); return true; } // This function will be called when the app is inactive. When comes a phone call,it be invoked too void AppDelegate::applicationDidEnterBackground() { CCDirector::sharedDirector()->stopAnimation(); // if you use SimpleAudioEngine, it must be pause // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } // this function will be called when the app is active again void AppDelegate::applicationWillEnterForeground() { CCDirector::sharedDirector()->startAnimation(); // if you use SimpleAudioEngine, it must resume here // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); } 

But I think the code from appdelegate never executes: /

+8
c ++ ide opengl cocos2d-x qt-creator
source share
1 answer

This part looks great, check the AppDelegate :: applicationDidFinishLaunching () method, which actually runs in the application, you can also set the resourcepath variable inside the above method, since nothing would have been available before that.

0
source share

All Articles