美文网首页
CocoaHTTPServer报错implicit declar

CocoaHTTPServer报错implicit declar

作者: 叫我逗Bee | 来源:发表于2019-08-07 11:40 被阅读0次

    最近开发用到一个第三方公司的库,他们的库有用到CocoaHTTPServer,吐槽下,这库2013年就停更了,版本定格在了2.3,开始编译之后报错implicit declaration of function 'LOG_OBJC_MAYBE' is invalid in C99 查了下有说是debug编译类型选错的,其实根本原因是:
    这库用了CocoaLumberJack,而且是1.x版本的,CocoaLumberjack在2.0更新的时候,改动挺大,官方也给出了1.x迁移到2.x的更新步骤,现在已经到3.5.3版本了,但是CocoaHTTPServer代码中用的还是1.x的方法。因为库已经不再更新,只能自己去修改源代码了。

    报错:

    image.png

    出错文件:

    CocoaHTTPServer/HTTPLogging.h
    

    这里用的还是1.x的方法:

    #define DD_LEGACY_MACROS 0
    #import "DDLog.h"
    

    修改方法:

    1--将上面两行改为

    #import <CocoaLumberjack/CocoaLumberjack.h>
    

    2--然后增加两个宏定义:

    #define HTTP_LOG_OBJC_MAYBE(async, lvl, flg, ctx, frmt, ...) \
    do{ if(HTTP_LOG_ASYNC_ENABLED) LOG_MAYBE(async, lvl, flg, ctx, nil, sel_getName(_cmd), frmt, ##__VA_ARGS__); } while(0)
    
    #define HTTP_LOG_C_MAYBE(async, lvl, flg, ctx, frmt, ...) \
    do{ if(HTTP_LOG_ASYNC_ENABLED) LOG_MAYBE(async, lvl, flg, ctx, nil, __FUNCTION__, frmt, ##__VA_ARGS__); } while(0)
    

    3--然后把整个头文件里的:
    所有LOG_OBJC_MAYBE改成HTTP_LOG_OBJC_MAYBE
    所有LOG_C_MAYBE改成HTTP_LOG_C_MAYBE

    4--重新编译,错误消失

    原因:

    1.x版本,是通过引入DDLog.h头文件来引入DDLegacyMacros.h。2.x版本之后使用的是DDLogMacros.h,使用的是新的LOG_MAYBE方法,废弃掉了LOG_OBJC_MAYBE方法。

    吐槽:

    这种已经放弃了更新的库,一般都会选择使用其他类似的库或者直接使用源代码来改动,还用cocoapods的话 真的是无比的蛋疼,改动了pods的源代码,小伙伴pod install之后也得去改源代码,烦的一笔

    相关文章

      网友评论

          本文标题:CocoaHTTPServer报错implicit declar

          本文链接:https://www.haomeiwen.com/subject/hutodctx.html