I try to run cocos2d-x v 2.2 helloword project in QtCreator. I'm using 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 compiled properly without errors, but when the application run, the window with black screen appear and disappear in the next moment. I think that run() method return -1. The console output print me this:
cocos2d-x debug info [Ready for GLSL]
cocos2d-x debug info [Ready for OpenGL 2.0]
I try to run my project on Ubuntu 12.04. Can anybody know what I 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's 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's 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 that, the code from appdelegate never execute :/