Cocos2dx v3.4发布模式错误

时间:2015-05-06 19:00:30

标签: c++ cmake cocos2d-x release cocos2d-x-3.0

我尝试使用CMake在发布模式下构建游戏。我禁用了DEBUG_MODE并成功构建了项目,但是当我运行它时,我收到一个错误,我没有进入调试模式。Error Message

这是调用堆栈。

KernelBase.dll!763d2f71()   Unknown
    [Frames below may be incorrect and/or missing, no symbols loaded for KernelBase.dll]    
    [External Code] 
>   SortingGame.exe!BackgroundBuilder::configureTimeLabel(const cocos2d::Vec2 timeContainerEndPos) Line 236 C++
    SortingGame.exe!BackgroundBuilder::configureTimeContainerSprite() Line 226  C++
    SortingGame.exe!GameScene::configureTimeContainerSprite() Line 352  C++
    SortingGame.exe!GameScene::configureScene() Line 210    C++
    SortingGame.exe!GameScene::init() Line 130  C++
    SortingGame.exe!GameScene::create() Line 25 C++
    SortingGame.exe!LoadingScreen::onKeyPressed(cocos2d::EventKeyboard::KeyCode keyCode, cocos2d::Event * event) Line 168   C++
    [External Code] 
    SortingGame.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) Line 24   C++
    [External Code]

BackgroundBuilder::configureTimeContainerSprite()函数只被调用一次。如果我在BackgroundBuilder::configureTimeContainerSprite()中拨打BackgroundBuilder::BackgroundBuilder(),则BackgroundBuilder::configureTimeContainerSprite()中的错误不会发生在main.cpp文件的return Application::getInstance()->run();行中。这里的错误也是一样的。 使用Visual Studio 2013构建项目时出现相同的错误。

1 个答案:

答案 0 :(得分:0)

我弄明白了这个问题。似乎我将资产预加载到游戏中的方式存在问题。在TitleScreen::init()我使用此功能加载资产。 GameManager::getInstance()->getResourceManager()->loadTextures("GameScene", callback); 这里是CocosResourceManager::loadTextures()

的实现
void CocosResourceManager::loadTextures(const std::string &sceneName, const std::function<void(std::string sceneName, int loadedAssetCount, int totalAssetCount)> &callback)
{
    std::map<std::string, std::string> assets = parseAssetsArray(sceneName);
    int totalAsset = assets.size(), loadedAsset = 0;
    for (auto value : assets) {
        TextureCache::getInstance()->addImage(value.second);
        loadedAsset++;
        callback(sceneName, loadedAsset, totalAsset);
    }
}

当我没有使用该功能加载资产时,在发布模式下没有崩溃。当我预先加载它们时,我将它与我之前在上面发布的堆栈跟踪一起使用。 TextureCache::getInstance()->addImageAsync();TextureCache::getInstance()->addImage();都会发生这种情况 我预加错了吗?任何人都可以解释为什么会这样吗?