美文网首页
解决华为eSpace SDK那些让人头疼编译错误

解决华为eSpace SDK那些让人头疼编译错误

作者: 龙城九哥 | 来源:发表于2015-10-10 14:46 被阅读643次

    集成华为的eSpace SDK 时,编译华为提供的demo程序,SDK里面有三个文件编译报错:
    DBContact.h
    CircleInviteDataModel.h
    CircleInviteDataModel.mm

    1.其中DBContact.h中有个static方法报错,搜索了一下,发现没有其他地方引用此方法,既然这样,那就直接注释掉这个方法
    2.至于CircleInviteDataModel.mm这个文件,里面更是一堆莫名其妙的代码,简单看了一下,里面大多是非ARC时期的代码,还有些变量名、类型名没有声明,华为工程师建议直接删除这个文件,这样一来就简单干脆,直接删除这个文件。既然.mm文件删了,.h文件也没有存在的意义了,所以把CircleInviteDataModel.h一起删除。
    如此,解决编译错误,但是接下来,出现了167个链接错误,如下所示:

    ld: warning: directory not found for option '-L/Users/wanghu/Desktop/eSpaceSDK/UC_API_IT_Demo/Depend/eSDK/Release-iphoneos'
    ld: warning: directory not found for option '-L/Users/wanghu/Desktop/eSpaceSDK/UC_API_IT_Demo/Depend/eSDK/Debug-iphonesimulator'
    ld: warning: directory not found for option '-L/Users/l00206777/Documents/workspace/V200R003C00_20150210S(SDK)/eSpaceIOSSDK/Build/Debug-iphoneos'
    ld: warning: directory not found for option '-L/Users/l00206777/Documents/workspace/eSpaceSDKlib_iphone/Release-iphoneos'
    ld: warning: directory not found for option '-L/Users/l00206777/Documents/workspace/eSpaceSDKlib_iphoneTR6/eSpaceSDKlib_iphone/Release-iphoneos'
    ld: warning: ignoring file /Users/wanghu/Desktop/eSpaceSDK/UC_API_IT_Demo/eSpaceSDKlib_iphone/Release-iphoneos/libeSpaceIOSSDK.a, file was built for archive which is not the architecture being linked (i386): /Users/wanghu/Desktop/eSpaceSDK/UC_API_IT_Demo/eSpaceSDKlib_iphone/Release-iphoneos/libeSpaceIOSSDK.a
    Undefined symbols for architecture i386:
      "_AMR_EXTENTION", referenced from:
    
    14444590898694.jpg

    把链接器的错误信息翻来覆去的看,无非原因是相关的库没导入,或者指令体系结构不正确,但是按照要求改了多次依然无效,最后无意间搜索了一下ld:warning:ignoring file这行警告信息,根据提示,修改了编译选项:Build Settings->Build Options->Enable BitCode->NO 设置以后,又根据网上搜索到的答案:

    可能原因二:正如这个错误提示所指出的那样,缺少了i386架构的东西。这很可能是由于项目中包含的静态库是被编译用于真机测试的,大家都知道苹果手机cpu是arm架构,而mac笔记本(当然也包括运行于其上的iphone-simulator)是intel架构。所以当这个静态库被编译用于device的时候,在目标为simulator下的编译是会报错的。 
    解决方法一:
    直接真机调试。 
    解决方法二:
    重新为simulator编译静态库,然后有一个更高端的解决办法,就是将两种架构的静态库合并:
    

    果断连上真机,问题成功解决。看来解决有些问题真是靠经验,光看错误信息表面看不出什么来。感谢那位提供答案的网友的热心分享。

    相关文章

      网友评论

          本文标题:解决华为eSpace SDK那些让人头疼编译错误

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