Ogre的文件读取是使用的标准库的io库读取的,众所周知的是,在vs2005是存在着bug的。
因此想要一劳永逸的解决这个办法唯有去修改Ogre的源代码,以下为修改方法:

打开OgreFileSystem.cpp文件,找到FileSystemArchive::open方法,使用以下代码替换之:

DataStreamPtr FileSystemArchive::open(const String& filename) const
    {
        String full_path = concatenate_path(mName, filename);

        // Use filesystem to determine size 
        // (quicker than streaming to the end and back)
        struct stat tagStat;
        int ret = stat(full_path.c_str(), &tagStat);
        assert(ret == 0 && "Problem getting file size" );

        // Always open in binary mode
        static std::vector<wchar_t>    s_wchar_buf((size_t)128);
        size_t lengthUnicode = MultiByteToWideChar(CP_ACP, 0, full_path.c_str(), full_path.size(), NULL, 0);
        if (s_wchar_buf.size() < lengthUnicode + 1)
        {
            s_wchar_buf.resize(lengthUnicode * 2);
        }
        wchar_t* szUnicode = &s_wchar_buf[0];
        MultiByteToWideChar(CP_ACP, 0, full_path.c_str(), full_path.size(), szUnicode, lengthUnicode);
        szUnicode[lengthUnicode] = 0;
        std::ifstream* origStream = new std::ifstream();
        origStream->open(szUnicode, std::ios::in | std::ios::binary);

        // Should check ensure open succeeded, in case fail for some reason.
        if (origStream->fail())
        {
            delete origStream;
            OGRE_EXCEPT(Exception::ERR_FILE_NOT_FOUND,
                "Cannot open file: " + filename,
                "FileSystemArchive::open");
        }

        /**//// Construct return stream, tell it to delete on destroy
        FileStreamDataStream* stream = new FileStreamDataStream(filename,
            origStream, tagStat.st_size, true);
        return DataStreamPtr(stream);
    }

posted on 2008-12-09 03:42 杨粼波 阅读(957) 评论(2)  编辑 收藏 引用

Feedback

re: Ogre读取中文路径名的文件失败的解决办法 2010-09-05 19:16
用setlocale(LC_ALL,"Chinese-simplified");就可以了。    
  

re: Ogre读取中文路径名的文件失败的解决办法[未登录] 2010-09-12 00:56
你知道setlocale这个方法的代价有多大么?会带来什么影响么?    
  

Ogre读取中文路径名的文件失败的解决办法相关推荐

  1. [UE4]导入 PSD 文件失败的解决办法:输出为 PNG,将 PNG 再保存为 PSD 导入

    导入 PSD 文件失败的解决办法:输出为 PNG,将 PNG 再保存为 PSD 导入 图1 报错弹窗 LogFactory: FactoryCreateFile: Texture with Reimp ...

  2. unzip: Ubuntu系统下解压文件失败的解决办法

    unzip: Ubuntu系统下解压文件失败的解决办法 双击打开.zip压缩文件,出现错误:装入归档文件时出现了一个错误 使用命令unzip无法解压成功, unzip opencv-3.2.0.zip ...

  3. 【以压缩文件方式打开文件失败】解决办法

    用好压打开文件,发现:[以压缩文件方式打开文件失败], 瞬间崩溃,于是很努力的去找解决方法,最终解决方案如下: 使用winrar软件(如果没有winrar需要安装),使用工具修复压缩文件 拖拉修复的压 ...

  4. Ubuntu中用gedit保存文件失败的解决办法

    1.Ubuntu中用gedit编辑文件后不能保存 这是因为没有相关文件的写权限,更改文件权限使用chmod命令,参见P289 2.Ubuntu中用gedit保存文件时,提示要生成备份文件,但又提示备份 ...

  5. php从数据库读取中文显示问号??的解决办法

    出错原因: 1.数据库编码格式不对 2.PHP编码格式不对 3.浏览器编码格式不对 上面三者编码格式不统一,就会出现问题 数据库读取的时候在mysqli_connect()之后要设置连接字符编码mys ...

  6. windows server 2008 英文版安装中文vs2008 sp1补丁失败的解决办法

    关于VS2008SP1无法安装相信你的VS2008是中文版,英文版不存在该问题. 安装错误是在安装.net3.5SP1的中文语言包的时候 办法一是改安装脚本ParameterInfo.xml绕过语言包 ...

  7. [虚拟机] VMware 15 + CentOS 7.7/8.0在主机和客户机之间拷贝文件失败的解决办法

    CentOS 7.7是CentOS 7.x最后一个版本,本以为这个版本应该很完美,而且会解决7.6里对压缩包点右键没有"在当前目录解压"的选项的bug,实际试了一下比较失望,这个选 ...

  8. unzip:  cannot find or open Ubuntu系统下解压文件失败的解决办法

    问题: 执行解压命令:unzip -d /home/××/下载 gradle-3.5-all.zip时,目录完全正确但是却出现了如下错误:     unzip:  cannot find or ope ...

  9. 自动调用Wine Windows Program Loader执行EXE文件失败的解决办法

    Wine安装完之后,双击exe文件的时候,都会自动调用Wine Windows Program Loader,而调用这个往往会出现错误: The file '/home/tools/SecureCRT ...

最新文章

  1. 行为模式之Chain of Responsibility模式
  2. i18n and L10n
  3. VMWare: eth0: error fetching interface information : device not found
  4. 【数据挖掘知识点五】层次聚类方法的理解
  5. 用计算机算出你喜欢吃你喜欢的人,Go for it七年级下学期1-12单元(期末复习)句子翻译专练...
  6. [剑指offer]面试题7:用两个栈实现队列
  7. 手动绘制DataTable
  8. print( )函数调用——pytnon小练
  9. c语言蠕虫病毒源码,蠕虫病毒源码!附带解毒源码!
  10. 从零开始之驱动发开、linux驱动(二十、linux设备驱动中的并发控制)
  11. CPU飙升到100%问题排查
  12. 1114 计算营业额
  13. 中国压电材料取得突破性进展,未来B超机可折叠弯曲
  14. 714. [C++]买卖股票的最佳时机含手续费
  15. HTTP请求响应的5种状态
  16. java存档_存档 Java 代码 - Java 入门教程
  17. 自动管道过滤器结构组成与应用领域介绍
  18. eclipse在资源管理器中打开文件
  19. VMware 虚拟机网络配置
  20. 人工智能机器人-智能时代的新纪元

热门文章

  1. python 解析xml格式_Python解析XML文件
  2. 用matlab相关分析,基于matlab的逐像元偏相关分析
  3. 神策数据汽车行业解决方案重磅上线,全面赋能车企数字化转型
  4. 喜报 | 安信证券签约神策数据!
  5. 奢侈品级别的广告位,到底要不要继续砸钱?
  6. com.alibaba.druid.sql.parser.ParserException: syntax error, QUES %, pos 80 like报错解决
  7. Winform开发框架之数据曲线报表
  8. Redis 文档阅读笔记 (一)
  9. mysql innodb学习笔记
  10. 华为路由器RIP协议通信的配置