在Ubuntu的QtCreator中的Cocos2d-x

 yo繽紛樂 发布于 2023-02-12 12:08

我尝试在QtCreator中运行cocos2d-x v 2.2 helloword项目.我正在使用基于此存储库的此项目文件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}

我的main.cpp文件:

  #include "../Classes/AppDelegate.h"
#include "cocos2d.h"
#include "CCEGLView.h"

#include 
#include 
#include 
#include 

#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();
}

项目编译正确无误,但是当应用程序运行时,黑屏的窗口会在下一刻出现并消失.我认为run()方法返回-1.控制台输出打印我:

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

我尝试在Ubuntu 12.04上运行我的项目.谁能知道我做错了什么?

=====编辑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();
}

但我认为,appdelegate的代码永远不会执行:/

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有