前几天由于作一个语音视频通话的功能, 在项目中引入部分语音通话库, 致使出现如下错误:ios
后通过排查, 终于定位到错误, 原来是由于新导入的两个.a静态库与原先项目中的 .a 静态库同名所致使c++
要排查项目内是否有这个问题xcode
在这里搜索你的.a静态库, 查看是否有和你引入的静态库同名的库, 而后删除掉其中一个就能够解决app
如下是其余排查方法:测试
一、"std::ios_base::Init::~Init()", referenced fromui
出现这样的编译问题,是须要再加进libstdc++.dylib和libstdc++.6.dylib(为6.1使用,xcode5之后默认complier也能够编译经过)code
二、apple Mach-o Linker error一般是由于compile source中有相同的.m文件视频
三、若是在真机中进行测试时出现failed to get the task for process,有多是证书出了问题。接口
四、若是出现expect a type的错误,可能出现了在.h文件中的循环引用。get
五、之后不能同时有两个同样的.m文件在编译,这样会报linker command failed with exit code 1 (use -vto see invocation)这个错误
(另外:若是代码中混合有C或者C++代码,那么,也不能够在两个不一样名称的mm文件中进行声明或者引用,由于也会致使这个错误的发生)。
6. 编译器提示相似file is universal but does not contain a(n) armv6 slice for architecture armv6的错误。多是您的XCode版本太低,推荐使用4.2以上的版本,将XCode的Build Settings中的Architectures设置成arm7。
7. XCode提示有相似C++语法的错误。多是您在调用接口时没有设置成OC与C++混编模式(具体作法为将调用接口的实现文件改成.mm的后缀)。
8. 提示相似ld: 3 duplicate symbols for architecture i386(arm7)的错误。多是您用了与SDK相同的第三方库,解决方法是删除引发错误的第三方法库的实现文件(.m文件)。
9. 编译器提示相似file is universal (2 slices) but does not contain a(n) armv7s slice:…… for architecture armv7s的错误。是由于此版本的库还不支持arm7s的环境,将Build Settings项中的Valid ArchiteCtures中的arm7s删除便可解决。
10. 编译器提示相似Duplicate symbol _NN_Decode in /Users/…/libPPUserPayKit.a(UPPayRsa_nn.o) for architecture armv7或Command /Developer/…/bin/llvm-g++-4.2 failed with exit code 1的错误。则是由于C++混编模式引发的,您能够将Build Settings 设置项里面的Other Linker Flags设置成空便可。