cocos2d-x新项目在Xcode9.1编译时报错

cocos2d-x新项目在Xcode9.1编译时报错call to unavailable function 'system':not available on iOS

之前因为Xcode9.0模拟器卡爆的问题,我把Xcode回退了,所以没发现Cocos2dx新建项目在Xcode上编译会报错的问题。今天心血来潮建了个新项目,发现居然报错了。
我在网上找了很多方法例如需要将报错的代码AssetsManager.cpp的system(command.c_str()); 修改为:popen(command.c_str(), "r");之类的我都试了一下,都不行。当然也可能是我操作失误。
后来在官方的论坛上找到的解决办法拿来和大家分享一下。官方论坛解决方案

打开GitHub的链接之后,在Xcode的左下方搜索CCFileUtils.cpp文件一看发现和我的CCFileUtils.cpp文件有些地方有差别,所以我就搜索他新加的上一行,首先是搜索#include ,然后添加
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
#include 
#endif
然后在bool FileUtils::createDirectory(const std::string& path)的大括号外面添加
namespace
{
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
    int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
    {
        int rv = remove(fpath);

        if (rv)
            perror(fpath);

        return rv;
    }
#endif
}
找到下面一个紧挨着的方法
bool FileUtils::removeDirectory(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)
最后command+R慢慢等吧

你可能感兴趣的:(cocos2d-x新项目在Xcode9.1编译时报错)