我只是将所有CocoaAsyncSocket代码标记为非ARC代码,并且它给了我这3个错误:
Undefined symbols for architecture armv7:
"_kCFStreamNetworkServiceTypeVoIP", referenced from:
-[GCDAsyncSocket enableBackgroundingOnSocketWithCaveat:] in GCDAsyncSocket.o
"_kCFStreamNetworkServiceType", referenced from:
-[GCDAsyncSocket enableBackgroundingOnSocketWithCaveat:] in GCDAsyncSocket.o
"_kCFStreamPropertySSLSettings", referenced from:
-[GCDAsyncSocket maybeStartTLS] in GCDAsyncSocket.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
有人知道这意味着什么以及如何解决它?
答案 0 :(得分:16)
我认为我通过查看代码评论找到了解决方案,但我现在看到它也是Mark Adams在上面提出的建议。我有错误,直到我在目标 - >构建阶段 - > Link Binary With Libraries - > Select CFNetwork.framework
下添加了CFNetwork.framework答案 1 :(得分:4)
这意味着您正在编译的某些代码引用了常量“kCFStreamNetworkServiceTypeVoIP”,“kCFStreamNetworkServiceType”和“kCFStreamPropertySSLSettings”,但是当它尝试将您的代码与它使用的库链接时,找不到这些常量。 / p>
不幸的是,这可能有很多原因:
您可以使用'nm'来搜索库中二进制文件的导出符号,使用'otool -L'来检查二进制文件链接的库。
答案 2 :(得分:0)
将LineaPro API集成到应用程序时,我遇到了同样的错误。
我实施的修复程序是将ExternalAccessory.framework添加到General - >链接框架和库。
我已经包含了CFNetwork.framework。