|
一下代码是我在ogre基础教程上看到的一段代码,我把它敲在了编译器上,提示如下错误
>d:\ogre\ogresdk_vc10_v1-7-4\include\ogre\exampleframelistener.h(454): warning C4244: “-=”: 从“double”转换到“Ogre::Real”,可能丢失数据
1>f:\vs2010_test\test_ok_ogre1\test_ok_ogre1\main.cpp(27): error C2259: “Tutorialication”: 不能实例化抽象类
1> 由于下列成员:
1> “void ExampleApplication::createScene(void)”: 是抽象的
1> d:\ogre\ogresdk_vc10_v1-7-4\include\ogre\exampleapplication.h(364) : 参见“ExampleApplication::createScene”的声明
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
之后我看了下ExampleApplication类发现createScene是个纯虚函数virtual void createScene(void) = 0,但是在Tutorialication这个派生类中已经对createScene进行了实现,不知道为什么会出现上诉不能实例化的错误,为了解决上面不能实例化问题,我把ExampleApplication类中的createScene函数由纯虚函数改成了虚函数virtual void createScene(void);
结果却又出现如下错误,IS_d.lib(OIS_d.dll) : error LNK2005: "public: class OIS::MouseState const & __thiscall OIS::Mouse::getMouseState(void)const " (?getMouseState@Mouse@OIS@@QBEABVMouseState@2@XZ) 已经在 BaseApplication.obj 中定义
1>main.obj : error LNK2001: 无法解析的外部符号 "protected: virtual void __thiscall ExampleApplication::createScene(void)" (?createScene@ExampleApplication@@MAEXXZ)
1>F:\VS2010_test\test_ok_ogre1\Debug\test_ok_ogre1.exe : fatal error LNK1120: 1 个无法解析的外部命令迫于无奈只好拿出来求教高手指导:
#include"ExampleApplication.h"
class Tutorialication:public ExampleApplication
{
protected:
void CreateScene(void)
{
}
public :
Tutorialication()
{
}
~Tutorialication()
{
}
};
#if OGRE_PLATFORM==OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include<windows.h>
INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE ,LPSTR strCmdLine, INT)
#else
int main(int argc ,char **argv)
#endif
{
Tutorialication app;
try
{
app.go();
}
catch(Exception &e)
{
#if OGRE_PLATFORM==OGRE_PLATFORM_WIN32
MessageBox(NULL,e.getFullDescription().c_str(),"An exception has occured!",MB_OK|MB_ICONERROR|MB_TASKMODAL);
}
#else
fprintf(stderr,"an exception has occured :%s\n",e.getFullDescription().c_str());
#endif
return 0; |
|