xcode9.2 编译 Cocos2dx-3.10时的问题

2018年4月27日

源码是某平台开源出来的**游戏代码,在使用xcode9.2编译Cocos2dx-3.10 时会出现以下问题,特此记录。

问题1:缺少pch文件

解决方法:

在目标目录下创建 指定的 pch文件。

Command+N,打开新建文件窗口:ios->other->PCH file,创建一个pch文件。

问题2:Use of undeclared identifier 'UIDevice'

解决方法:

在对应文件中引入头文件

#import <UIKit/UIKit.h>

类似问题可能会出现多个地方,因此,各种未声明的问题需要在 .pch文件中加入如下内容:

#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
#include <time.h>
#include <stdint.h>
#include <assert.h>
#include <sys/time.h>
#include <sys/select.h>
#include <OpenGLES/ES2/gl.h>
#include <OpenGLES/ES2/glext.h>

#ifdef __OBJC__
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
#endif

#ifdef __cplusplus
    #include <vector>
    #include <string>
    #include <map>
    #include <list>
    #include <memory>
    #include <functional>
    #include <thread>
    #include <mutex>
    #include <unordered_map>
    #include <list>
    #include <algorithm>
    #include <cstdint>
    #include <stack>
#endif

问题三:Call to unavailable function 'system': not available on iOS

Xcode升级到9.0时(我用的是9.2),编译会报这个错误。解决方法见这篇博客

按照该博客上的说明,可以完美解决这个问题。
官方让我们对CCFileUtils.cpp文件进行修改。需要注意,这里不能直接把GitHub上面的这个文件的替换自己项目的该文件,因为2个项目的这个文件其实是不一样的,不同的地方,不仅仅是GitHub上面的变化。 
首先找到对应的部分,搜索#include <dirent.h>,然后,在下面添加下面的代码:
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
#include <ftw.h>
#endif

然后在新添加的代码下面有下面两个方法:

bool FileUtils::isDirectoryExistInternal(const std::string& dirPath) const

bool FileUtils::createDirectory(const std::string& path)

在这两个方法的下面,添加如下代码:

#if !defined(CC_TARGET_OS_TVOS)
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID) 
    if (nftw(path.c_str(), unlink_cb, 64, FTW_DEPTH | FTW_PHYS) == -1) 
        return false; 
    else 
        return true; 
#else

方法结尾处添加下面内容:

#endif // (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
#endif // !defined(CC_TARGET_OS_TVOS)

至此,就解决了该问题。

该问题产生的原因,我分析是调用了系统底层的删除目录的命令,也就是system里面的方法,但是在高版本的系统中,应该是屏蔽掉了这个系统命令,不允许调用了,所以,才会出现上面的问题。

期待后面版本的cocos引擎或者creator能够修复这个问题。


编译完成后,生成 libcocos2d iOS.a 文件,路径为:

/Users/evilstar/Library/Developer/Xcode/DerivedData/cocos2d_libs-cdzbpdpfmydrwhdaxgsbnaaitqbn/Build/Products/Debug-iphoneos

说明:

cocos最新版本 3.16编译时,无任何报错!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员柒叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值