2010-03-01 23 views
0

Je suis 2 erreurs loin de la compilation Qgears. (Version piratée du moteur Final Fantasy VII)J'ai besoin d'aide avec cet en-tête dépendant de l'ogre (Qgears)

Je me suis trompé avec les préprocesseurs pour charger l'emplacement réel des fichiers d'en-tête ogre.

Voici les erreurs:

||=== qgears, Debug ===| 
/home/cj/Desktop/qgears/trunk/project/linux/src/core/TextManager.h|48|error: invalid use of ‘::’| 
/home/cj/Desktop/qgears/trunk/project/linux/src/core/TextManager.h|48|error: expected ‘;’ before ‘m_LanguageRoot’| 
||=== Build finished: 2 errors, 0 warnings ===| 

Voici le fichier d'en-tête:

// $Id$ 

#ifndef TEXT_MANAGER_h 
#define TEXT_MANAGER_h 

#include <OGRE/OgreString.h> 
#include <OGRE/OgreUTFString.h> 
#include <map> 

struct TextData 
{ 
    TextData(): 
     text(""), 
     width(0), 
     height(0) 
    { 
    } 

    Ogre::String  name; 
    Ogre::UTFString  text; 
    int     width; 
    int     height; 
}; 

typedef std::vector<TextData> TextDataVector; 



class TextManager 
{ 
public: 
          TextManager(void); 
    virtual    ~TextManager(void); 

    void     SetLanguageRoot(const Ogre::String& root); 

    void     LoadTexts(const Ogre::String& file_name); 
    void     UnloadTexts(const Ogre::String& file_name); 
    const TextData  GetText(const Ogre::String& name); 

private: 
    struct TextBlock 
    { 
     Ogre::String   block_name; 
     std::vector<TextData> text; 
    } 

    Ogre::String   m_LanguageRoot; // Line #48 
    std::list<TextBlock> m_Texts; 
}; 



extern TextManager* g_TextManager; 



#endif // TEXT_MANAGER_h 

Le seul fichier d'en-tête qui est en comprennent ce n'est pas un fichier d'en-tête d'ogre est « la carte ».

Si cela vous aide, j'utilise le compilateur IDE/GCC Code :: Blocks sous GNU/Linux. (Arch)

Je ne suis pas sûr que même si j'obtiens cet en-tête corrigé, je pense que je vais avoir des erreurs de construction, mais ça vaut le coup.

Edit: J'ajouté le point-virgule et j'ai une autre erreur dans le fichier d'en-tête:

error: expected unqualified-id before ‘{’ token 

Répondre

0

Cette définition TextBlock struct manque un ; à la fin.

En outre, std::vector et std::list sont utilisés sans le #include approprié. Si elles ne sont pas déjà incluses dans certains en-têtes, cela peut également entraîner des erreurs de construction.

Modifier: Les compiles suivants à la fois VC et Comeau:

//#include <OGRE/OgreString.h> 
//#include <OGRE/OgreUTFString.h> 
namespace Ogre { 
    struct String { String() {} String(const char*) {} }; 
    struct UTFString { UTFString() {} UTFString(const char*) {} }; 
} 

#include <map> 
#include <vector> 
#include <list> 

struct TextData 
{ 
    TextData(): 
     text(""), 
     width(0), 
     height(0) 
    { 
    } 

    Ogre::String  name; 
    Ogre::UTFString  text; 
    int     width; 
    int     height; 
}; 

typedef std::vector<TextData> TextDataVector; 



class TextManager 
{ 
public: 
          TextManager(void); 
    virtual    ~TextManager(void); 

    void     SetLanguageRoot(const Ogre::String& root); 

    void     LoadTexts(const Ogre::String& file_name); 
    void     UnloadTexts(const Ogre::String& file_name); 
    const TextData  GetText(const Ogre::String& name); 

private: 
    struct TextBlock 
    { 
     Ogre::String   block_name; 
     std::vector<TextData> text; 
    }; 

    Ogre::String   m_LanguageRoot; 
    std::list<TextBlock> m_Texts; 
}; 

extern TextManager* g_TextManager; 

Avez-vous des problèmes pour le compiler avec votre compilateur?

+0

Que voulez-vous dire? – commodore

+0

Je reçois toujours la même erreur sur la même ligne. mais le nombre est passé de 43 à 45. – commodore

+0

J'ai encore plus d'erreurs avec cet entête. J'abandonne (pour l'instant) c'est trop complexe pour moi de réparer à mon niveau de compétence. – commodore