引用静态库时Xcode 3/4兼容性

时间:2011-10-26 21:12:04

标签: xcode linker static-libraries

我们有多台开发机器,一些运行Xcode 3.2.5,另一些运行Xcode 4.2。我们有一个由我们的项目引用的静态库。它包含Objective C类别,因此我们需要使用-force_load标志和库的路径。

我们遇到的问题是,在Xcode 4.2上,库的链接位置与我们在-force_load中指定的路径不同。这会导致重复的符号错误,因为它试图链接同一个库的两个副本。

Xcode 4.2链接的路径是: /用户/用户名/库/开发商/ Xcode中/ DerivedData / PROJECTNAME-ehxeazvigqrpvogkxlkcmdzpisdw /建造/产品/ CONFIGURATION平台/

而Xcode 3.2.5链接的位置是: PROJECT_ROOT_OF_STATIC_LIBRARY /建造/ CONFIGURATION平台/

有没有办法让Xcode 4.2在链接静态库时使用与Xcode 3.2.5相同的位置,以便我们可以使用force_load链接器选项?如果没有,任何人都可以提出一个替代解决方案,让Xcode 3.2.5和4.2能够很好地协同工作吗?

1 个答案:

答案 0 :(得分:0)

听起来我觉得你正在以艰难的方式做事。

我从未使用-force_load来加载静态库。使用我使用的库,它们都作为框架存储在我的系统上与项目分开的目录中。然后,我使用XCode标准添加框架对话框将它们带入项目,并使用“-ObjC -all_load”以确保它们正常工作并且类别处于活动状态。

我已经成功地将一些项目从XCode 3移到了4,并没有遇到你提到的问题。我怀疑,如果你可以停止使用-force_load,你的问题就会消失。