Xcode 9.2 Objective-C项目添加WCSession出现链接错误求助
解决Objective-C iOS项目添加WatchConnectivity时的链接错误与路径警告
嘿,我看你在给复杂的Objective-C iOS项目加Watch功能时刚起步就碰到了构建问题,这几个错误和警告其实挺常见的,咱们一步步来搞定:
1. 先搞定核心的WCSession符号找不到错误
这个Undefined symbols for architecture arm64: "_OBJC_CLASS_$_WCSession"错误,本质是链接器找不到WatchConnectivity框架里的类,最常见的原因是你没把系统框架加到项目里:
- 打开你的iOS主项目target,切换到
Build Phases标签页 - 找到
Link Binary With Libraries部分,点击右下角的+号 - 在弹出的搜索框里输入
WatchConnectivity,找到对应的系统框架后添加进去 - 重新构建项目,这个符号找不到的问题应该就能解决了
另外再确认下你的项目部署目标:WatchConnectivity要求iOS 9.0及以上,要是你的target版本低于这个,记得在Build Settings里把iOS Deployment Target调到9.0或更高。
2. 处理Library Search Paths的目录警告
那些directory not found for option的警告,是因为项目的Library Search Paths里配置了几个不存在的路径:
- 打开主项目的
Build Settings,搜索Library Search Paths - 在列表里找到警告里提到的这几个路径:
/Users/mac/Documents/raceQs-iOS/ios/raceqs_pod/Library/Users/mac/Documents/raceQs-iOS/ios/raceqs_pod/Pods/build/Release-iphoneos/Users/mac/Documents/raceQs-iOS/ios/raceqs_pod/Pods/build/Debug-iphoneos
- 直接删除这些不存在的路径就行。如果这些路径是CocoaPods生成的,也可以试试在项目根目录执行
pod install或者pod update,让Pods重新生成正确的路径配置。
额外提醒
要是你之后要写完整的WCSession逻辑,记得在激活session的时候实现对应的代理方法,不然可能会有运行时警告,不过这是后话啦,先把构建问题解决了再说。
内容的提问来源于stack exchange,提问作者BlastWave
相关产品推荐
相关产品推荐

