ios 编译错误--文件连接错误
今日在学习Wattt写的AFNetworking类库,真心佩服这些大神。学了就想着用一下它,于是就新建了工程,将类库直接加在工程里,没成想一运行就报告编译错误,错误如下:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_AFURLConnectionOperation", referenced from:
objc-class-ref in ASViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
看到这个错误觉得异常的熟悉啊,哦!对了,确实遇见过这样的问题,而且那次解决这个问题的时间很长很长。
其实这个问题很简单,从它的报告上理解就是AFURLConnectionOperation是未定义的标示符,程序构造时找不到这个标示,呵呵,这就简单了我们打开此工程的Build Phase,在compile sources里面将我们自己引入类库的.m文件都加进来,再运行就好了。具体步骤:
单击工程-->Build Phase选项卡-->单击compile sources下的小“+”,选择你加入类库的.m文件。(都加上哦)
完成之后将会是如下样子:
问题虽然解决了,那么这是怎么回事呢?我们可以看到在最初的时候compile sources下都是只有你的main.m,appDelegate.m,viewController.m,没有你的类库.m文件,也就是说我们把第三方类库放在程序的文件里,没有真正放在程序里,而Xcode在编译程序时,是需要这些文件的,那么我们就需要把他们引进来,按照上述说法改过之后就会发现编译通过了!
其实,不仅仅是在使用第三方类库时有这种问题,有时候我们自己在工程里新建的文件Xcode也不会加载(我不是很理解为什么),总之下次遇见Undefined symbols for architecture i386知道是文件连接的错误就好解决了。