疑难杂症又一记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tkokof1/article/details/83655384

本文简述了一种 OGRE 示例程序 SampleBrowser 运行出错的解决方法

下了 OGRE 的 1.10.11 版本,使用 CMake 生成了相应的工程文件,遂而编译源码和示例,一切都挺顺利,但是当尝试 Debug 模式下执行 SampleBrowser 时却报了错: Unable to read zip file …

在这里插入图片描述

简单google了一下,大部分的说法都是配置的资源路径有问题,尝试修改了一下,未能解决问题,于是索性调试源码了.

不过调试的结果有些奇怪,错误似乎发生在依赖库 zzip 中,出错的 API 调用是这个:

在这里插入图片描述

简单跟了一下 zzip 的内部代码,发现出错点好像是发生在运行时库中,这让人觉得困惑.

后来尝试 Release 模式运行了一下 SampleBrowser ,没想竟然成功了!遂而比较了一下差异,最后发现是运行时库的冲突导致了这个问题,简而言之, zzip 是静态链接入程序中的,其使用的是 多线程DLL(/MD) 运行时库,而程序本身使用的是 多线程调试DLL(/MDd) 运行时库(Debug模式下),运行时库的冲突导致了诸如 fstat 等标准库函数的执行异常,继而导致了上述的加载出错问题.

解决方法也简单, Debug 模式下链接 zzip 的调试库即可(下载生成的 OGRE 工程中即带有 zzip 项目).

现在终于可以在 Debug 模式下正确执行 SampleBrowser 了~

在这里插入图片描述

这里有一个相关的讨论.

猜你喜欢

转载自blog.csdn.net/tkokof1/article/details/83655384
今日推荐