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

集成华为的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:
解决华为eSpace SDK那些让人头疼编译错误_第1张图片
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那些让人头疼编译错误)