在迁移到 IOS 7 后,我最近在我的应用程序中更新了 Sharekit 2.0,我使用了 sharekit wiki 上指定的更新 git 命令。但是现在当我运行该应用程序时,它无法构建并出现以下错误:
Undefined symbols for architecture i386:
"_FBErrorParsedJSONResponseKey", referenced from:
___27-[SHKFacebook doNativeShow]_block_invoke in libShareKit.a(SHKFacebook.o)
-[SHKFacebook FBRequestHandlerCallback:result:error:] in libShareKit.a(SHKFacebook.o)
"_FacebookSDKDomain", referenced from:
___27-[SHKFacebook doNativeShow]_block_invoke in libShareKit.a(SHKFacebook.o)
"_OBJC_CLASS_$_DBRequest", referenced from:
objc-class-ref in libShareKit.a(SHKDropbox.o)
"_OBJC_CLASS_$_DBRestClient", referenced from:
objc-class-ref in libShareKit.a(SHKDropbox.o)
"_OBJC_CLASS_$_DBSession", referenced from:
objc-class-ref in libShareKit.a(SHKDropbox.o)
"_OBJC_CLASS_$_FBDialogs", referenced from:
objc-class-ref in libShareKit.a(SHKFacebook.o)
"_OBJC_CLASS_$_FBRequest", referenced from:
objc-class-ref in libShareKit.a(BufferSheetViewController.o)
"_OBJC_CLASS_$_FBRequestConnection", referenced from:
objc-class-ref in libShareKit.a(SHKFacebook.o)
"_OBJC_CLASS_$_FBSession", referenced from:
objc-class-ref in libShareKit.a(BufferSheetViewController.o)
objc-class-ref in libShareKit.a(SHKFacebook.o)
"_OBJC_CLASS_$_FBSettings", referenced from:
objc-class-ref in libShareKit.a(SHKFacebook.o)
"_OBJC_CLASS_$_GPPShare", referenced from:
objc-class-ref in libShareKit.a(SHKGooglePlus.o)
"_OBJC_CLASS_$_GPPSignIn", referenced from:
objc-class-ref in libShareKit.a(SHKGooglePlus.o)
"_xmlFreeDtd", referenced from:
-[ENXMLDTD dealloc] in libShareKit.a(ENXMLDTD.o)
"_xmlFreeTextWriter", referenced from:
-[ENXMLWriter dealloc] in libShareKit.a(ENXMLWriter.o)
-[ENXMLWriter endDocument] in libShareKit.a(ENXMLWriter.o)
"_xmlGetCharEncodingName", referenced from:
-[ENXMLWriter startDocument] in libShareKit.a(ENXMLWriter.o)
"_xmlGetExternalEntityLoader", referenced from:
+[ENXMLDTD initialize] in libShareKit.a(ENXMLDTD.o)
"_xmlGetLastError", referenced from:
_CheckXMLResult in libShareKit.a(ENXMLWriter.o)
-[ENXMLDTD initWithContentsOfFile:] in libShareKit.a(ENXMLDTD.o)
"_xmlHashLookup", referenced from:
-[ENXMLDTD xmlEntityNamed:] in libShareKit.a(ENXMLDTD.o)
-[ENXMLDTD xmlElementNamed:] in libShareKit.a(ENXMLDTD.o)
"_xmlIOParseDTD", referenced from:
-[ENXMLDTD initWithContentsOfFile:] in libShareKit.a(ENXMLDTD.o)
"_xmlNewInputFromFile", referenced from:
_enxmlExternalEntityLoader in libShareKit.a(ENXMLDTD.o)
"_xmlNewTextWriter", referenced from:
-[ENXMLWriter startDocument] in libShareKit.a(ENXMLWriter.o)
"_xmlOutputBufferCreateIO", referenced from:
-[ENXMLWriter startDocument] in libShareKit.a(ENXMLWriter.o)
"_xmlParserInputBufferCreateFilename", referenced from:
-[ENXMLDTD initWithContentsOfFile:] in libShareKit.a(ENXMLDTD.o)
"_xmlResetLastError", referenced from:
_CheckXMLResult in libShareKit.a(ENXMLWriter.o)
-[ENXMLDTD initWithContentsOfFile:] in libShareKit.a(ENXMLDTD.o)
"_xmlSetExternalEntityLoader", referenced from:
+[ENXMLDTD initialize] in libShareKit.a(ENXMLDTD.o)
"_xmlTextWriterEndCDATA", referenced from:
-[ENXMLWriter endCDATA] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterEndDocument", referenced from:
-[ENXMLWriter endDocument] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterEndElement", referenced from:
-[ENXMLWriter endElement] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterSetIndent", referenced from:
-[ENXMLWriter startDocument] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterStartCDATA", referenced from:
-[ENXMLWriter startCDATA] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterStartDocument", referenced from:
-[ENXMLWriter startDocument] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterStartElement", referenced from:
-[ENXMLWriter startElement:] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterWriteAttribute", referenced from:
-[ENXMLWriter writeAttributeName:value:] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterWriteCDATA", referenced from:
-[ENXMLWriter writeCDATA:] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterWriteRaw", referenced from:
-[ENXMLWriter startDocument] in libShareKit.a(ENXMLWriter.o)
-[ENXMLWriter writeString:raw:] in libShareKit.a(ENXMLWriter.o)
"_xmlTextWriterWriteString", referenced from:
-[ENXMLWriter writeString:raw:] in libShareKit.a(ENXMLWriter.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我已经仔细检查了设置,包括框架和资源,它似乎都正确设置,有人知道问题是什么吗?
在以前工作的项目中更新 ShareKit 子模块后,我遇到了同样的问题。
我缺少的步骤是将这三个文件夹(位于文件夹./ShareKit/Frameworks/)拖到我的XCode项目中:
- DropboxSDK.framework
- FacebookSDK.framework
- GooglePlus.framework
在那之后,一切又恢复了正常:)
我而言,向我的项目添加框架是不够的,至少对于"_xml*"依赖项而言,所以我必须在构建阶段添加"libxml2.dylib">将二进制文件与库链接起来
在尝试了"仅构建活动架构"方面的所有内容后,认为我的一个目标库没有正确编译,我终于发现问题更加平凡:我需要更多的库来构建项目。在我的例子中,CoreMotion,AddressBook和libxml2。我将它们添加到构建阶段 -> 链接二进制文件与库,一切都很顺利。您可以通过未找到的函数的名称来猜测丢失的库。