OSX + OGRE + XCode的编译、生成和调试运行中的错误记录

OSX + OGRE + XCode的编译、生成和调试运行中的错误记录

由于苹果的Macbook Pro 实在是太小巧方便了。入手一个,ogre源码在这里建立,并运行了。

一、搭建环境

ogre :1.9.0
Mac OS :MacOS High Sierra 10.13.6
Xcode: 9.4.1
Make:3.12.4

具体编译生成的步骤还是省略了吧。刚刚我写了一遍发现和Windows下面一样,就是生成时候的编译环境的平台选择不一样。其它大体相同。而且也有一些相关的网页。
我参考了一些具体链接如下。
https://blog.csdn.net/u012419410/article/details/42468817?utm_source=blogxgwz1
https://blog.csdn.net/u012419410/article/details/42468995
https://www.cnblogs.com/kiscall/p/5361738.html
http://wiki.ogre3d.org/tiki-index.php?page=Building Ogre3D 1.9 Statically in Mac OS X (Yosemite)

这里还是主要记录一下,我这些天犯的各种白痴和不白痴的错误吧。

二、错误和解决方法的记录

错误1:

Ogre_iOS_7.0_Dependencies_20140315.dmg文件打包了,iOS平台上的依赖文件库和头文件夹。
Ogre Templates for Xcode 4.pkg 文件运行后将在Xcode平台上安装一个插件,这个插件用于创建iOS的ogre项目。新建项目的时候有相关选项可以选择。

依赖库源码下载:
https://sourceforge.net/projects/ogre/files/ogre-dependencies-mac/

所以上面两个里面都没有依赖库的源码。

错误2:

Xcode 10 苹果摒弃了对libstdc++库的支持转而支持libc++库了。所以会出现一些相关的错误。如找不到对应的头文件,或者库的链接错误。
其中推荐标记那个,很贴心的提供了替换包的下载地址,而且下载包里面有说明文档,看说明文档,直接运行里面的install.sh文件,直接拷贝到对应目录。简直是贴心暖男。
参考文章链接如下:
http://www.cocoachina.com/ios/20181024/25280.html
https://awhisper.github.io/2018/06/08/libstdc-inxcode10ios12/
https://www.jianshu.com/p/6d94278d62b3 (推荐)

错误3:

编译ogre源码的时候出现不支持i386的提示,将编译中的architectuires 改为标准的。如图:
在这里插入图片描述

错误4:

Undefined symbols for architecture armv7:
“std::__1::__vector_base_common::__throw_length_error() const”…

在这里插入图片描述

在这里插入图片描述

错误5:

Undefined symbols for architecture x86_64:
“OIS::InputManager::createInputObject(OIS::Type, bool, std::string const&)”, referenced from:
OgreBites::SampleContext::createInputDevices() in SampleBrowser.o
“OIS::InputManager::createInputSystem(std::multimap<std::string, std::string, std::lessstd::string, std::allocator<std::pair<std::string const, std::string> > >&)”, referenced from:
OgreBites::SampleContext::setupInput(bool) in SampleBrowser.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

添加 libois库也不管用。查找一下文件说是不同版本库重复安装,这里调用错误导致的。
终于找到解决方法了。
关键是编译使用了不同版本的c++基础库的原因。
在OIS库的项目配置里面降低基础库的版本就好了。
如下图所示,修改c++语法的方言和标准库调用。原来是C++11,现在改成C++98,对应的标准库也从原来的libc++改为现在的libstdc++。

在这里插入图片描述

这样就和调用这个ois库的SampleBrowers的配置统一了,项目编译时候的很多警告也就没有了。项目编译运行成功。
具体为什么这样改和这两个配置项目的意义,见下面链接的文章。
《从Xcode10不再支持libstdc++说起》
http://www.cocoachina.com/ios/20181024/25280.html
这里说的比较系统,而且条理清晰。

到这里ogre中Macbook 上,通过Xcode的build的我就编译运行通过啦~~撒花庆祝

猜你喜欢

转载自blog.csdn.net/jean7155/article/details/84969366