Unreal4 IOS上使用第三方库和C++11 特性问题解决

1649 篇文章 12 订阅
1623 篇文章 23 订阅

http://blog.sina.com.cn/s/blog_7c5fd2e90102uwht.html

    久违了我的朋友们,由于最近有个重要版本一直没有更新博客,希望大家还没有忘记我们。今天主要跟大家分享一下使用Unreal4在MAC上打包IOS时,使用第三方库和第三方库涉及到C++11的特性问题。


           EasyKit再新版本中引入了Kungfu网络模块。我们把网络模块做成了一个ThirdParty这样的做是为了只引用Include和Lib。在Win64平台很快就完成了模块的对接调试,但是在Mac上编译IOS时出现了大量问题。下面我们来一一分享问题和解决方案。

Win64 : 

         1. 首先在我们项目路径下的Source文件夹下创建ThirdParty目录,把网络模块放到了这个ThirdParty目录下。然后为了能让项目编译还需要创建一个编译文件 XXX.Build.cs 。附图:

Unreal4 <wbr>IOS上使用第三方库和C++11 <wbr>特性问题解决


        2. 在要使用的模块的.XXX.Build.cs 里面加上AddThirdPartyPrivateStat icDependencies(Target, "xxx"); [xxx为我们自己引入ThirdParty目录里的第三方库的模块名]。


IOS:

        1. 首先要确认我们自己使用的或者制作的第三库里有没有重名文件(跟IOS下的库文件名字一致),如果有重名文件的话编译器会报错Error : 提示未定义的xxx 但是还是可以从Error上链接过去。

      2. 使用MAC编译IOS版本时都是通过UnrealEngine4自己的UnrealBuildTool(UBT)工具去编译。所以Mac的编译会给我们生产XCode工程,但是我们还是无法通过修改XCode工程选项去修改编译设置。没有全部测试过但是编译文件的设置是绝对无效的。在IOS编译下UnrealBuildTool会去调用IOSToolChain.cs读取编译设置然后进行编译。 这就注定目前4.2版本 Mac平台下编译IOS无法支持C++11的特性 。当然Epic把源码给了我们,我们还是有办法解决这个问题的.... 想要解决这个问题首先要修改UnrealBuildTool编译工具让它在编译cpp mm c 等文件时 [ Result += " -std=c++11";  Result += " -stdlib=libc++"; ,去掉 Result += -onfo rtti ]。 好的,到这里为止我们还需要编译我们修改的代码,但是我们发现源码版的XCode工程中没有UnrealBuildTool工程,那是因为UnrealBuildTool是基于Mono平台的编译指令器,我们还需要下载Mono的 Xamarin编译工具打Engine \Source\Programs\AutomationToolAutomation Tool_Mono.sln工程然后编译就好了。 
附Mono的下载地址: http://www.go-mono.com/mono-downloads/download.html

   3. 如上修改后编译应该就可以顺利通过了,如果有同学在Link的时候出现[外部无法解析的符号roUndefined symbols for architecture armv7]错误比如std::_1::beas_string等等标准库的

   4. 我们还要修改 XXX.Build.cs 中 多添加一个.a的列表名字  PublicAdditionalShadowFi les 把我们需要的 .a 放进去。 否则编译时会出现找不到 .a 的问题。



      这几天非常累先记录这些,明天接着补充。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值