【问题标题】:Conflicting libraries in iOS projectiOS项目中的冲突库
【发布时间】:2013-08-28 14:01:29
【问题描述】:

所以基本上我有两个我认为相互冲突的库。我对 "Library Search path" 键有以下设置:

"$(SRCROOT)/projectname/Release-iphone/lib" 用于我的一个库,"$(SRCROOT)/projectname" 用于另一个。

我已将CorePlot 库添加到我的项目中,但要使其工作,它需要以下链接器标志-ObjC -all_load

现在,当我添加其中一个或两个时,我收到以下消息,我的项目将无法构建:

duplicate symbol _OBJC_CLASS_$_GTMHTTPFetcher in:
    /Users/user/Library/Developer/Xcode/DerivedData/projectname-chibchblpntaapfagqcohtkixhib/Build/Intermediates/projectname.build/Debug-iphoneos/projectname.build/Objects-normal/armv7/GTMHTTPFetcher.o
    /Users/user/Dropbox/Projectname/projectname/projectname/libGTLTouchStaticLib.a(GTMHTTPFetcher.o)
duplicate symbol _OBJC_METACLASS_$_GTMHTTPFetcher in:
    /Users/user/Library/Developer/Xcode/DerivedData/projectname-chibchblpntaapfagqcohtkixhib/Build/Intermediates/projectname.build/Debug-iphoneos/projectname.build/Objects-normal/armv7/GTMHTTPFetcher.o
    /Users/user/Dropbox/Projectname/projectname/projectname/libGTLTouchStaticLib.a(GTMHTTPFetcher.o)
ld: 176 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

问题出在 Google API 库 libGTLTouchStaticLib.a,但我不明白链接器标志如何影响它。

【问题讨论】:

    标签: ios xcode cocoa-touch core-plot


    【解决方案1】:

    看起来好像您将源文件直接包含在您的项目中,并且具有指向库的链接。您应该选择其中一个(可能是库)。

    【讨论】:

    • 问题是我没有引用那些要从任何地方导入的特定文件 - 我只是将它们拖放到我的项目中。
    • 我只是按照它报告的位置名称。 .../DerivedData/... 对于已编译的源文件是正常的,而 libGTLTouchStaticLib.a 是库引用。
    • 是的,那个是直接复制到项目中的,不应该吗?
    • 原来库 libGTLTouchStaticLib.a 正在编译它自己的文件,这些文件已经包含在我的项目中。
    【解决方案2】:

    screw -all_load 是加载类别的技巧。没有它应该可以工作

    【讨论】:

    • 没有!没有-all_load -ObjC 都不起作用
    • 需要ObjC -- all_load 在任何情况下都不好......你能发布你得到的错误吗?
    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 2018-05-19
    • 2021-11-11
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    相关资源
    最近更新 更多