我距离编译Qgears有2个错误。 (最终幻想VII引擎的黑客版)
我搞乱了预处理器来加载食人魔头文件的实际位置。
以下是错误:
||=== 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
包含不是食人魔头文件的唯一头文件是“map”。
如果有帮助,我在GNU / Linux中使用Code :: Blocks IDE / GCC编译器。 (ARCH)
我不确定即使我把这个标题修好了,我想我后面会有错误,但是值得一试。
编辑:我添加了分号,我在头文件中还有一个错误:
error: expected unqualified-id before ‘{’ token
答案 0 :(得分:0)
TextBlock
结构定义最后错过了;
。
此外,使用std::vector
和std::list
时没有相应的#include
。如果它们未包含在某些标头中,则可能会导致构建错误。
编辑:以下编译VC和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;
使用编译器编译时遇到问题吗?