为iOS构建一个静态库
问题描述:
我已经为iOS构建了一个静态库。我的问题是我在我的库中使用ASIHTTPRequest作为示例,当我将库添加到已使用ASIHTTPRequest库的应用程序时,出现编译器错误,直到我从使用我的库的项目中删除所有ASIHTTPRequest .m文件。为iOS构建一个静态库
有没有办法解决这个问题?例如,构建静态库并使其需要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作为另一个依赖级别。通过这种方式,您的两个项目都能够看到它的标题,并与其链接,并且不会有重复的符号问题。
如果你想发布您的静态库给其他开发者则是一个更加困难的境地......
什么是编译器错误,大多数人的错误与此获得与您复制文件的可达性做。 – 2011-05-25 18:39:06
我不记得了,但它与所有已经包含的.m文件有关 – 2011-05-25 18:44:15
我现在无法检查,因为我正在对图书馆进行重大改写 – 2011-05-25 18:46:06