【发布时间】:2024-01-16 15:15:01
【问题描述】:
将我的项目从 Xcode 5 迁移到 6 时出错。
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_AFHTTPRequestOperationManager", referenced from:
objc-class-ref in QCRoomListControllerViewController.o
objc-class-ref in libQCBase.a(QCHttpRequestAdapter.o)
objc-class-ref in libQCBase.a(QCHttpApi.o)
"_OBJC_CLASS_$_AFHTTPResponseSerializer", referenced from:
objc-class-ref in QCRoomListControllerViewController.o
"_OBJC_CLASS_$_AFJSONResponseSerializer", referenced from:
objc-class-ref in libQCBase.a(QCHttpApi.o)
ld: symbol(s) not found for architecture i386
我选择cocoapods作为包管理器,项目结构如下:
主要项目和 BaseLib 都在使用一些 pod,同时项目正在使用 BaseLib.a。
我尝试过 Xcode 5 与 iOS 7.1 SDK(这是唯一可行的 SDK)、Xcode 6 与 iOS 7.1 SDK 以及 Xcode 6 与 iOS 8.0 SDK 的组合。 我目前的结论是,无论我选择哪个版本的 iOS SDK,只要涉及 Xcode 6,链接都会失败。
相关设置如下所述。
在项目和 BaseLib 上都正确设置了 xcconfig 文件:
架构设置:
我的 Podfile 内容:
#platform :ios, "6.0"
source 'https://github.com/CocoaPods/Specs.git'
workspace 'QiChengWS.xcworkspace'
xcodeproj 'QiChengNew/QiChengNew.xcodeproj'
xcodeproj 'QCBase/QCBase.xcodeproj'
target :QiChengNew do
pod 'JSONModel'
pod 'SDWebImage', '~>3.6'
pod 'AutoNSCoding', '~> 0.1.3'
platform :ios, '7.0'
pod 'ProtocolBuffers', '~> 1.9'
pod 'CocoaAsyncSocket', '~> 7.3'
pod 'GBInfiniteScrollView', '~> 1.6'
pod 'GBInfiniteScrollView/PageControl'
pod 'UMengAnalytics', '~> 3.1.2'
platform :ios, '7'
pod 'MWPhotoBrowser', '1.4.0'
xcodeproj 'QiChengNew/QiChengNew.xcodeproj'
end
target :QCBase do
platform :ios, '7.0'
pod "AFNetworking", "~> 2.0"
pod 'SVPullToRefresh', :head
pod 'Toast', '~> 2.3'
xcodeproj 'QCBase/QCBase.xcodeproj'
end
【问题讨论】:
-
它不应该为 i386 编译/链接任何东西,因为你的目标平台是 ios。您是否尝试过删除
platform :ios, '7'行?target :QiChengNew中是多余的 -
i386 在这里很有意义,因为我是在 iOS 模拟器上编译我的项目。删除平台语句并没有太大区别,我仍然遇到同样的错误,感谢您的评论。
标签: ios xcode6 linker-errors cocoapods afnetworking-2