ios iPhone / iPad - 带有 GData 静态库 libGDataTouchStaticLib.a 的项目在构建时失败(重复符号)

Posted

技术标签:

【中文标题】ios iPhone / iPad - 带有 GData 静态库 libGDataTouchStaticLib.a 的项目在构建时失败(重复符号)【英文标题】:ios iPhone / iPad - Project with GData static library libGDataTouchStaticLib.a fails on build (duplicate symbol) 【发布时间】:2012-01-23 14:05:28 【问题描述】:

我正在尝试使用 GData 静态库 libGDataTouchStaticLib.a 构建应用程序 我已经在我的项目设置中进行了所有适当的链接,并将 GDataXMLNode.h 和 GDataXMLNode.m 复制到我的项目中。

我收到以下错误。有人可以帮我理解这是什么吗?

ld:重复符号 _kGDataXMLXPathDefaultNamespacePrefix in /Users/myUser/Library/Developer/Xcode/DerivedData/GData-edmqtrniowvhfjgfgngtlfxttvri/Build/Products/Debug-iphoneos/libGDataTouchStaticLib.a(GDataXMLNode.o) 和 /Users/myUser/Library/Developer/Xcode/DerivedData/MyApp-grzimbvctfmwhmdluxbuxmskcvzy/Build/Intermediates/MyApp.build/Debug-iphoneos/MyApp.build/Objects-normal/armv7/GDataXMLNode.o 架构 armv7 命令 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang 失败,退出代码为 1

【问题讨论】:

它也需要一些其他框架/dylibs.. 由于缺少框架而出现重复符号错误?...听起来不对... 【参考方案1】:

您不必将 GDataXMLNode.h 和 GDataXMLNode.m 复制到您的项目中。我相信你得到重复符号错误的原因是因为 libGDataTouchStaticLib.a 库已经包含编译的 GDataXMLNode.m 类。

我目前在我正在处理的项目中使用 GData 库,并使用以下说明进行设置:http://hoishing.wordpress.com/2011/08/23/gdata-objective-c-client-setup-in-xcode-4/,因此此答案假定您具有相同的设置。但是,我使用了一种稍微不同的方式来导入上述博客中的一个 cmets 所建议的标头。

在您的 Xcode 项目中删除 GDataXMLNode.h 和 GDataXMLNode.m 文件,并确保 GData.xcodeproj 项目以与上述博客相同的方式链接到您的项目,但不要 将 headers 目录拖到源代码树中。将这些参数添加到当前目标的 Debug 和 Release Header Search Paths 中:

/usr/include/libxml2
$BUILT_PRODUCTS_DIR/Headers

您可以在目标的“构建设置”选项卡下找到它。如果您已正确设置 GData.xcodeproj 文件,则第二个参数会将所有 GData 标头导入您的项目。完成此操作后,您应该可以在任何需要的地方导入各种 GData 类,包括 GDataXMLNode.h 类,方法是在相应类的顶部键入:

#import "GDataXMLNode.h"

Kelvin 的博客非常感谢他的精彩教程。希望对您有所帮助!

【讨论】:

以上是关于ios iPhone / iPad - 带有 GData 静态库 libGDataTouchStaticLib.a 的项目在构建时失败(重复符号)的主要内容,如果未能解决你的问题,请参考以下文章

IOS Webview 在 iPad 1 和 iPhone 3gs 上运行缓慢

在 HTML5 中的 iPhone/iPad 上带有后退按钮的 PDF?

带有iOS7的iphone上的UIDocumentInteractionController奇怪的行为

Coredata iPhone 到带有 iCloud 的 iPad/Mac?

处理带有参数 iphone / ipad 的点击手势

Xcode 6 iPhone 唯一的应用程序在 iPad 上崩溃