【问题标题】:Building a static library for iOS为 iOS 构建静态库
【发布时间】:2011-07-02 15:52:28
【问题描述】:

我已经为 iOS 构建了一个静态库。我的问题是我在我的库中使用 ASIHTTPRequest 作为示例,当我将我的库添加到已经使用 ASIHTTPRequest 库的应用程序时,我得到编译器错误,直到我从使用我的库的项目中删除所有 ASIHTTPRequest .m 文件.

有没有办法解决这个问题?例如构建静态库并使其需要 ASIHTTP 库而不是将它们添加到项目中?

编辑:

这是我“归档”项目后遇到的错误示例。

ld: duplicate symbol _main in /Users/tj/Library/Developer/Xcode/DerivedData/db-afhqjyfitjcnbqdmywezdvmryvyp/ArchiveIntermediates/db/IntermediateBuildFilesPath/db.build/Release-iphoneos/db.build/Objects-normal/armv6/fmdb.o and /Users/tj/Library/Developer/Xcode/DerivedData/db-afhqjyfitjcnbqdmywezdvmryvyp/ArchiveIntermediates/db/IntermediateBuildFilesPath/db.build/Release-iphoneos/db.build/Objects-normal/armv6/main.o for architecture armv6
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1

特劳斯蒂

【问题讨论】:

  • 什么是编译器错误,人们遇到的大多数错误与您复制可达性文件有关。
  • 我不记得了,但它与所有已包含的 .m 文件有关
  • 我现在无法检查,因为我现在正在对库进行重大重写
  • 您的项目中是否已有 Reachability.m?保证就是它! :-)

标签: iphone ios ipad


【解决方案1】:

我的建议是将 ASIHTTPRequest 作为一个依赖项目添加到您的静态库项目中,从而使其成为一个自己的静态库。本质上,您所做的是创建一个 xcode 项目,将 ASIHTTPRequest 打包到其中,关闭该项目,然后将 ASIHTTPRequest 项目文件拖放到静态库项目的文件导航器中。这会将其添加为依赖项目并自动将其构建为静态库并将您的项目链接到它。

在您的一个应用程序项目中使用您的静态库时,请执行相同的操作。将静态库作为依赖项项目来管理更容易,而 ASIHTTPRequest 又作为另一个级别的依赖项。这样,您的两个项目都将能够看到其标题,并对其进行链接,并且不会出现重复符号问题。

如果您尝试将您的静态库发布给其他开发人员,那么情况会更加困难......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多