游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4772|回复: 3

ogre入门时的尴尬

[复制链接]

5

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2012-3-25 21:36:00 | 显示全部楼层 |阅读模式
一下代码是我在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;

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
发表于 2012-3-26 13:17:00 | 显示全部楼层

Re:ogre入门时的尴尬

学ogre起码要过2道关口,
第一个c++熟练。
第二基本的openGL或者dx编程经验。
你连第一关都没过就想一口吃个胖子是不可能的。

0

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2012-3-26 17:45:00 | 显示全部楼层

Re: ogre入门时的尴尬

“void CreateScene(void)”

你把“create”写成“Create”了。 程序识别不出来,就会去找exampleapplication.h中原来的,结果就出错了。

注意大小写和输入格式。

其实我今天也遇到这个问题了,在网上搜了好久才发现原因。
我也在学习OGRE,以后有什么问题共同学习哈!   [em13]

5

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2012-3-26 18:43:00 | 显示全部楼层

Re:ogre入门时的尴尬

我看的问文档时2003年的,发现很多函数都已经更新了,感觉压力挺大的。本人QQ号603737966,希望能结交志同道合的朋友共同学习探讨OGRE
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-28 17:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表