我已经为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
特劳斯蒂
最佳答案
我建议将ASIHTTPRequest添加为自己的静态库,方法是将其作为依赖项添加到静态库的项目中。本质上,您要做的是创建一个xcode项目,将ASIHTTPRequest打包到其中,关闭该项目,然后将ASIHTTPRequest项目文件拖放到静态库项目的文件导航器中。这会将其添加为依赖项项目,并自动将其构建为静态库并针对该项目链接您的项目。
在一个应用程序项目中使用静态库时,请执行相同的操作。将静态库作为依赖项项目进行管理比较容易,而依赖项项目又将ASIHTTPRequest作为另一级依赖项。这样,您的两个项目都将能够看到其标题并进行链接,并且不会出现重复的符号问题。
如果您试图将静态库发布给其他开发人员,则情况将更加困难...
关于iphone - 为iOS构建静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129129/