相关疑难解决方法(0)

如何使用共享静态库避免xcode中的"重复符号"错误?

我有静态库A,B和C组织到Xcode项目中.A和B依赖于C.当我构建一个依赖于A和B的iPhone项目时,我得到一个链接器错误,在A和B中检测到重复的符号(来自C).我如何组织这三个静态库,所以我可以将它们包含在其他Xcode项目中而不会遇到此错误?

c xcode objective-c duplicate-symbol

29
推荐指数
3
解决办法
3万
查看次数

重复符号:在静态库B中包含静态库A,在XCode项目中也包含库A和B.

我一直在尝试为应用程序开发构建一组可重用的库,但我开始遇到问题.

我的一个静态库是一组通用方法(Objective-C Foundation类的类别,以提高它们的可用性),我倾向于在每个项目中使用它们.(我们称之为Lib A ...即XCode项目A生成libProjectA.a)

然后我有其他静态库,包含数学专用代码的东西等(我们称之为Lib B.)Lib B链接到Lib A,因为它需要使用一些通用功能.(即XCode项目B与libProjectA.a链接并生成libProjectB.a)

在我的XCode项目中,我希望包含并依赖于Lib A,因为它具有我一直使用的一般用途.我还想包含并依赖Lib B,因为我需要专门的数学功能.(即我的应用程序Project想要与libProjectA.a和libProjectB.a链接)

但是,当我尝试构建我的XCode项目时,我得到重复符号的错误,因为Lib A中定义的符号也在Lib B中定义.

ld: duplicate symbol _OBJC_METACLASS_$_Foo in /Users/kenny/xcode_build/Release-iphonesimulator/lib_ApplicationCore.a(Foo.o) and /Users/kenny/xcode_build/Release-iphonesimulator/lib_SpecializedMath.a(Foo.o)
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?我想开发可重用的库来加速我的应用程序开发,并通过经过测试/改进的代码来提高稳定性.我是从错误的角度来看待这个吗?我正在为iOS开发,所以我不能使用dylib,它们必须是静态的.

如果我们的项目彼此相互依赖并避免重复的符号,我如何将这些库包含在我的项目中?

xcode objective-c static-libraries reusability ios

11
推荐指数
1
解决办法
3812
查看次数