在 Win8 中使用 GCC、C::B 安装 Ogre3D

Posted

技术标签:

【中文标题】在 Win8 中使用 GCC、C::B 安装 Ogre3D【英文标题】:Ogre3D installation with GCC, C::B in Win8 【发布时间】:2014-03-12 11:31:57 【问题描述】:

我正在尝试使用代码块 12.11 设置 Ogre3D v1.8.1,其中配置了 GCC 4.7.0。我为MinGW下载了Ogre3D的预编译版本,启动示例编译和执行程序没有错误,但是在初始化Ogre3D(驱动程序选择屏幕)期间出现一些错误并且应用程序冻结。网上搜一搜发现,网上有很多帖子,很多人都卡在那个阶段的节目过不去了。

Ogre3D scrren 崩溃后的 C::B 编译器报告

 In __cxa_throw () (D:\Ogre3D_181\OgreSDK_MinGW_v1-8-1\bin\Debug\OgreMain_d.dll)
 87 ..\..\..\..\..\OgreMain\src\OgreConfigFile.cpp: No such file or directory.
 #1  0x009507e9 in Ogre::ConfigFile::loadDirect (this=0x28fc48, filename=...,
 separators=..., trimWhitespace=true) at ..\..\..\..\OgreMain\src\OgreConfigFile.cpp:87
 Debugger finished with status 0

Ogre3D.log报告如下图

 13:19:34: MovableObjectFactory for type 'BillboardSet' registered.
 13:19:34: MovableObjectFactory for type 'ManualObject' registered.
 13:19:34: MovableObjectFactory for type 'BillboardChain' registered.
 13:19:34: MovableObjectFactory for type 'RibbonTrail' registered.
 13:19:34: OGRE EXCEPTION(6:FileNotFoundException): 'plugins.cfg' file not found! in     
 ConfigFile::load at ..\..\..\..\..\OgreMain\src\OgreConfigFile.cpp (line 88)

根据 Ogre3D 和 C::B 产生的抱怨,我似乎没有正确传递正确的 include/source/lib 目录和外部依赖项,但实际上我已经按照 Ogre3D 官方网站的说明进行操作,并且我'确定这是正确的,否则编译器应该在编译期间抛出异常。与此同时,其他用户即使正确配置了环境也遇到了此类问题。

另一个错误

  07:09:37: OGRE EXCEPTION(7:InternalErrorException): Unable to compile Cg program      
  Ogre/DualQuaternionHardwareSkinningTwoWeightsTwoPhaseCg: The compile returned an    
  error.DualQuaternion_Common.cg(167) : warning C7019: "blendWgt" is too large for  
   semantic    
  "BLENDWEIGHT", which is size 1
   (0) : error C6007: Constant register limit exceeded; more than 96 constant registers   
   needed to compiled program

   (0) : error C6007: Constant register limit exceeded; more than 96 constant registers   
   needed to compiled program
   (0) : error C6007: Constant register limit exceeded; more than 96 constant registers 
   needed to compiled program
    in CgProgram::compileMicrocode at 
   ..\..\..\..\..\..\PlugIns\CgProgramManager\src\OgreCgProgramManagerDll.cpp (line 67)

您的指导将不胜感激,

【问题讨论】:

能否请您发布完整的Ogre.log 日志文件。 这里是完整的 Ogre.log dropbox.com/s/6eega7mb38h1evb/Ogre.log 【参考方案1】:

异常不是抱怨源目录或外部依赖项。它抱怨缺少plugins.cfg 文件。日志中最相关的一行是:

OGRE 异常(6:FileNotFoundException):找不到“plugins.cfg”文件!在...

该文件的位置被传递给Root 的构造函数。演示可能使用working directory 的根。确保工作目录设置正确且文件位于该路径中。

请参阅本指南Setting Up An Application - CodeBlocks

如果您想从 Code::Blocks 中运行可执行文件,您需要在项目设置中设置“工作目录”和“命令”,如下所示:(参见该页面中的图片)

您可以在tutorial 中找到有关初始化以及 plugins.cfg 的更多基本信息

【讨论】:

当我超过一个错误时,这次又会出现另一个错误,它是'OGRE EXCEPTION(7:InternalErrorException):我将输出添加到主消息'我不认为它与代码故障有关或语法,很可能是导致差异的插件配置文件,它们带有全套插件,我相信这不是必需的。让我感到困惑的一件事是,如果有任何异常,Ogre 控制台屏幕和 C::B 编译器报告不会报告相同的错误,这是预期的结果吗?【参考方案2】:

关于你的第二个错误:

正如消息中明确指出的,您的 Cg 程序试图使用比您的机器上可用的寄存器更多的寄存器。这取决于显卡(您使用的是哪一个)?

根据您要实现的目标,您可能需要稍微调整着色器,使其保持在硬件支持的范围内。

例如,参见 Ogre3D forums thread,其中 DualQuaternion 着色器发生了类似的事情,用户只是减少了骨骼数量。在 ATI 卡上,该着色器通常只支持 24 个骨骼。

重要提示: Ogre v1.9 已修复该领域的许多问题,因此我建议您尽可能更新。 v1.9 已经稳定很久了(事实上我们已经在准备下一个版本 v.1.0)。

【讨论】:

谢谢你,在注释掉一些插件后,尤其是 CGxxx。在 plugins.cfg 文件中,我设法在控制台屏幕中找到了食人魔头。 AFAIU 在我的情况下,它们被不必要地加载只是因为它们带有默认配置。很高兴听到 1.9 更稳定且易于安装。

以上是关于在 Win8 中使用 GCC、C::B 安装 Ogre3D的主要内容,如果未能解决你的问题,请参考以下文章

信息安全系统设计基础第三周学习总结

2018-2019-1 20165334《信息安全系统设计基础》第三周学习总结及缓冲区溢出漏洞实验

解决win8.1安装qq时出现安装路径无效的有效方法

如何将 GCC LTO 与不同优化的目标文件一起使用?

如何在og邀请新成员中提取站点成员的所有电子邮件?

如何在Win8系统下安装使用Mathcad15