2015-05-06 78 views
0

我試圖在使用CMake的發佈模式上構建我的遊戲。我禁用DEBUG_MODE併成功構建了該項目,但是當我運行它時,出現錯誤,我沒有進入調試模式。 Error MessageCocos2dx v3.4發佈模式錯誤

這裏是調用堆棧。

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::BackgroundBuilder()中調用BackgroundBuilder::configureTimeContainerSprite(),則該錯誤不會發生在BackgroundBuilder::configureTimeContainerSprite()中,而是在main.cpp文件的return Application::getInstance()->run();行中發生。這裏的錯誤也是一樣的。 我使用Visual Studio 2013構建項目時出現同樣的錯誤。

+0

我設法得到一個詳細的堆棧日誌。這裏是 - > https://paste.kde.org/pqttvvxkm – Furkanzmc

回答

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

的執行情況時,我不與該功能PE加載的資產,有一個在釋放模式沒有崩潰。當我預先加載它們時,我在之前發佈的堆棧跟蹤中找到它。這種情況發生在TextureCache::getInstance()->addImageAsync();TextureCache::getInstance()->addImage();之間 我是否預加載了錯誤的方式?有人可以解釋爲什麼會發生這種情況嗎?