一般来说,报这个错是某个库的链接有问题。
解决方法
1、在Build Phases > Link Binary With Libraries
,删除引用再重新添加引用。
2、在Build Setting > Library Search Path
,检查搜索路径。
将多余的路径删除,或者添加缺失的路径。多余路径一般是添加了某个第三方库,后面又移除而残留的。
3、在 Edit Scheme > build
,添加pod target
。
正常情况是不用添加的。我遇到的情况是,run没问题,但archive的时候报ld: library not found for -lAFNetworking
,仔细一看发现archive过程根本就没compile第三方库,所以手动添加编译选项。
4、关于ld: library not found for -lPods-[ProjectName]
有时候,缺失的不是第三方的library,而是[ProjectName].a
。至于这个[ProjectName].a
是怎么生成的,暂时无法分析,也无法知晓这个.a
文件为何就不存在了。初步猜测是和Pod
有关。
解决方法:在Build Phases > Link Binary With Libraries
,删除libPods-[ProjectName].a
。
5、关于use_frameworks!
导致的报错
如果你的podfile文件,之前没有使用use_frameworks!
,后来因为要使用Swfit编写的库而使用了use_frameworks
!,那么你有很大几率遇到library not found
的问题。原因是:如果没有使用use_frameworks!
,第三方库是以library的形式存在于工程中的,一旦你使用了use_frameworks
,第三方库的存在形式就变成framework了。之前在other linker flags
里,以-l
开头的依赖都将失效,报错就是就是这么产生的。例如:ld: library not found for -lAFNetworking
。
解决方法:将other linker flags
里带-l
开头的第三方库依赖删除。建议一个一个操作,避免误删。