2010-03-01 5 views
0

Qgears를 컴파일하는 데 2 ​​번의 오류가 있습니다. (파이널 판타지 VII 엔진의 해킹 된 버전)이 오거 종속 헤더 (Qgears)에 대한 도움이 필요합니다.

나는 오우거 헤더 파일의 실제 위치를로드하기 위해 전처리 기가 엉망이되었습니다.

는 여기에 오류가 있습니다 :

||=== 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 ===| 

다음은 헤더 파일입니다 :

// $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 

에서의 유일한 헤더 파일은 그 "지도"하는 귀신 헤더 파일이 아니다 있습니다.

도움이된다면 GNU/Linux의 Code :: Blocks IDE/GCC 컴파일러를 사용하고 있습니다. (Arch)

이 헤더가 고정 되어도 잘 모르겠지만 후자의 빌드 오류가있을 것입니다.하지만 그럴 가치가 있습니다.

편집 : 나는 세미콜론을 추가하고 난 헤더 파일에 하나 이상의 오류가 있습니다 TextBlock 구조체 정의가 마지막에 ;를 벗어났습니다

error: expected unqualified-id before ‘{’ token 

답변

0

것을.

또한 std::vectorstd::list은 적절한 #include없이 사용됩니다. 헤더에 이미 포함되어 있지 않으면 빌드 오류가 발생할 수 있습니다.

편집 : VC와 꼬모 모두 다음 컴파일 :

//#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; 

는 문제가 컴파일러이 컴파일이 있습니까?

+0

무엇을 의미합니까? – commodore

+0

같은 줄에 여전히 같은 오류가 발생합니다. 그러나 번호는 43에서 45로 변경되었습니다. – commodore

+0

나는 그 헤더에 더 많은 오류가 있습니다. 나는 (지금 당장)이 기술력 수준에서 해결하기에는 너무 복잡하다. – commodore