您的位置:首页 > 移动开发 > IOS开发

unavailable function 'system': not available on iOS

2018-03-23 16:59 495 查看
在做更新的时候(我的是从xcode8升级到xcode9), 电脑xocde一整套完全升级。完了之后发现编译之前的程序出现

unavailable function 'system': not available on iOS

原因是iOS11一将system删除,解决办法:打开CCFileUtils.cpp,中找到使用在的方法 removeDirectory(),将其注释,并替换上下面的代码:[cpp] view plain copy// #include <dirent.h>  
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)  
#include <ftw.h>  
#endif  
// removeDirectory  
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  
}  
// removeDirectory           :  
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  
 std::string command = "rm -r ";  
  // Path may include space.  
 command += "\"" + path + "\"";  
 if (system(command.c_str()) >= 0)  
  return  true;  
 else  
                         return  false;  
 #endif // (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)  
#else  
  return  false;  
#endif // !defined(CC_TARGET_OS_TVOS)  
}  
然后完美解决!!!

注意下,cocos-2dx版本不同,有的在AssetManager.cpp中也有使用到  system。此时,直接将 system(command.c_str());更换成popen(command.c_str(), "r");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐