• Xcode 编译运行旧项目报错解决之路


      运行几年前做的项目,发现各种编译报错,一个一个解决记录下:

      1、Xcode(Xcode9)编译运行报错,但是在 issue navigatior 栏看不到错误信息;

        解决方案:在 show report navigator 栏查看编译错误信息:

      Showing All Messages

      The operation couldn’t be completed. Unable to log in with account '**@**.com'. (The login details for account '**@**.com' were rejected.)

        

        根据错误信息显示,说这个账户失效了(之前公司的Apple ID),需要在偏好设置中移除相应账户即可。

        

        继续编译,下一个报错信息:

      2、error: implicit declaration of function 'ether_ntoa' is invalid in C99 [-Werror,-Wimplicit-function-declaration]

                strcpy(temp, (char *)ether_ntoa(LLADDR(sdl)));

        解决方案:找到错误位置,引用类库:

        导入这三个头文件即可,
        #include <sys/types.h>
        #include <sys/socket.h>
        #include <net/ethernet.h>
    
        然后上面那行代码会有一个警告:"Incompatible pointer types passing 'caddr_t' (aka 'char *') to parameter of type 'const struct ether_addr *'" ;
        可以在LLADDR的前面加上(const struct ether_addr *) 也就是这样:
        strcpy(temp, (char *)ether_ntoa((const struct ether_addr *)LLADDR(sdl)));
        这样就没有警告了。

      3、.xib: Compiling IB documents for earlier than iOS 7 is no longer supported. 工程是14年之前 Xcode创建的,升级到Xcode9后报错。

        解决方案:将builds For 改成 iOS10之后就可以了。

        

        解决完成,大功告成,编译运行成功。接下来就是各种适配问题了 。

  • 相关阅读:
    Ⅰ.Spring的点点滴滴--序章
    Ⅶ.AngularJS的点点滴滴-- 事件
    Ⅵ.AngularJS的点点滴滴-- 指令
    vue路由跳转
    使用<a-select>时,placeholder不起作用
    动态配置生成echarts图表
    elementui resetFields()不起作用
    input输入框与button按钮之间存在空隙
    一个怂女婿的成长笔记【二十二】
    一个怂女婿的成长笔记【七】
  • 原文地址:https://www.cnblogs.com/ZachRobin/p/9767724.html
Copyright © 2020-2023  润新知