2011-02-01 2 views
2

J'écris un jeu en utilisant Ogre3D et j'ai un problème.Ogre3D montre erreur segfault

Quand je programme de départ, il affiche une erreur de segfault:

*-*-* OGRE Initialising                                                               
*-*-* Version 1.7.2 (Cthugha)                                                             
Creating resource group Essential                                                            
Added resource location '../media/packs/SdkTrays.zip' of type 'Zip' to resource group 'Essential' 
Added resource location '../media' of type 'FileSystem' to resource group 'General' 
Added resource location '../media/materials/scripts' of type 'FileSystem' to resource group 'General' 
Added resource location '../media/materials/textures' of type 'FileSystem' to resource group 'General' 
Added resource location '../media/models' of type 'FileSystem' to resource group 'General' 
Naruszenie ochrony pamięci [This means segfault] 

Et je ne sais pas pourquoi ...

code:

#define OGRE_CHANGE1 ((1 << 16) | (1 << 8)) 

#include "Ogre.h" 
#include "ExampleApplication.h" 

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
#define WIN32_LEAN_AND_MEAN 
#include "windows.h" 
#else 
#include <iostream> 
#endif 

class MyApp : public ExampleApplication 
{ 
    protected: 
    public: 
    MyApp() 
    { 
    } 

    ~MyApp() 
    { 
    } 
    protected: 
    void createScene(void) 
    { 
    } 
}; 

#ifdef __cplusplus 
extern "C" { 
#endif 

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT) 
#else 
int main(int argc, char **argv) 
#endif 
{ 
    MyApp App; 
    try 
    { 
    App.go(); 
    return 0; 
    } 
    catch (Ogre::Exception& e) 
    { 
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 
    MessageBox(NULL, e.getFullDescription().c_str(), "Exception!", 
      MB_OK | MB_ICONERROR | MB_TASKMODAL); 
#else 
    std::cerr <<"Exception:\n"; 
    std::cerr <<e.getFullDescription().c_str() <<"\n"; 
#endif 
    return 1; 
    } 
} 

#ifdef __cplusplus 
} 
#endif 

(code de partie Ogre Wiki)

resources.cfg:

# Resources required by the sample browser and most samples. 
[Essential] 
Zip=../media/packs/SdkTrays.zip 

# Resource locations to be added to the default path 
[General] 
FileSystem=../media 
FileSystem=../media/materials/scripts 
FileSystem=../media/materials/textures 
FileSystem=../media/models 

et plugins.cfg:

# Defines plugins to load 

# Define plugin folder 
PluginFolder=/usr/lib/OGRE 

# Define plugins 
# Plugin=RenderSystem_Direct3D9 
# Plugin=RenderSystem_Direct3D10 
# Plugin=RenderSystem_Direct3D11 
Plugin=RenderSystem_GL 
# Plugin=RenderSystem_GLES 
Plugin=Plugin_ParticleFX 
Plugin=Plugin_BSPSceneManager 
Plugin=Plugin_CgProgramManager 
Plugin=Plugin_PCZSceneManager 
Plugin=Plugin_OctreeZone 
Plugin=Plugin_OctreeSceneManager 

Et - quand je commente Plugin=Plugin_CgProgramManager dans plugins.cfg ... Le programme fonctionne, mais je besoin de ce plug-in. :)

Aidez-nous s'il vous plaît.
Merci d'avance.

+1

Personne ne peut vous aider à moins que vous nous indiquiez le code. – Asha

+0

Vous ne pouvez pas vous aider directement, mais vous devriez également envisager de demander à la communauté gamedev à http://gamedev.stackexchange.com/ :) – Exa

+0

Il y a aussi un Ogreforum: Je pense qu'ils veulent voir le fichier journal d'Ogre. Je suppose que vous pouvez également afficher le fichier journal ici, vous verrez alors quelle était la dernière entrée (et donc où elle a échoué) – Default

Répondre

2
  1. Compilez le programme avec les informations de débogage incluses (avec GCC, cela signifie que l'option -g est transmise au compilateur).
  2. Exécutez-le dans un débogueur. En cas de panne, vous obtiendrez une trace de pile.
  3. Étudiez si cela semble dépendre de quelque chose que vous avez fait (ou non, comme une initialisation manquante), ou si cela ressemble à un crash dans Ogre3D.
    1. Si le premier, le fixer.
    2. Si ce dernier, le signaler.