架构 i386 的未定义符号:“_OBJC_CLASS_$_SecIdentity”

Posted

技术标签:

【中文标题】架构 i386 的未定义符号:“_OBJC_CLASS_$_SecIdentity”【英文标题】:Undefined symbols for architecture i386: "_OBJC_CLASS_$_SecIdentity" 【发布时间】:2014-06-09 14:39:00 【问题描述】:

Xcode 不允许我编译这段代码:

func getIdentity(keychainArray: NSArray) -> SecIdentity? 
    let dict = keychainArray[0] as Dictionary<String,AnyObject>
    let key = kSecImportItemIdentity.takeRetainedValue()
    return dict[key] as SecIdentity?

编译器退出并出现以下错误:

Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SecIdentity", referenced from:
 __TFC9messenger10Connection19streamOpenCompletedfS0_FT_T_ in Connection.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我测试了一些东西,发现 SecIdentity 是一个类型别名。 我发现当我尝试将某些内容转换为类型别名时,编译器总是会生成这些错误消息。如果我将它转换为一个类(例如 NSObject / NSDictionary),它确实可以工作,但 CFDictionary 也会导致错误。这有帮助吗?

【问题讨论】:

你链接的是Security.framework吗? 是的,请看下面的评论 【参考方案1】:

SecIdentity and friends 是安全框架的一部分,所以听起来你需要链接它。

【讨论】:

我猜你的意思是“目标常规”选项卡中的“链接框架和库”。我已经尝试添加安全框架。没有成功。我还必须将它们链接到其他地方吗? @user3211074 不,那应该这样做。 没有成功。我正在使用 Xcode 6 Beta ios 8.0 和 OS X 10.10。

以上是关于架构 i386 的未定义符号:“_OBJC_CLASS_$_SecIdentity”的主要内容,如果未能解决你的问题,请参考以下文章

架构 i386 的未定义符号:“_SCNetworkReachabilitySetCallback”

架构 i386 的未定义符号 - Lipo 错误?

“架构 i386 的未定义符号”问题

架构 i386 的未定义符号:_FlutterMethodNotImplemented

架构 i386 的未定义符号:用于 OpenCV 项目

架构 i386 的未定义符号:“_OBJC_CLASS_$_RCTBundleURLProvider”