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

objective-c – 重复符号:在静态库B中包含静态库A,在XCode项目中也包含库A和B.,第1张

概述我一直在尝试为应用程序开发构建一组可重用的库,但我开始遇到问题. 我的一个静态库是一组通用方法(Objective-C Foundation类的类别,以提高它们的可用性),我倾向于在每个项目中使用它们. (我们将其称为Lib A …即XCode项目A生成libProjectA.a) 然后我有其他静态库,包含数学专用代码的东西等(我们称之为Lib B.)Lib B链接到Lib A,因为它需要使用一些 我一直在尝试为应用程序开发构建一组可重用的库,但我开始遇到问题.

我的一个静态库是一组通用方法(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)

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

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

解决方法 虽然lib B依赖于lib A,但你实际上并不想将A中的所有对象都放入B中,这就是你通过它看起来所做的事情.我不确定你是如何管理的,但是我想你在建造自由B时你是否与lib A有联系?如果是这样,只需从lib B的构建行中省略lib A.所有来自lib A的符号都是在lib B中未定义的.

静态库只是目标文件的归档,因此两者应该完全分开.当您需要链接lib B时,只需指定lib A.

总结

以上是内存溢出为你收集整理的objective-c – 重复符号:在静态库B中包含静态库A,在XCode项目中也包含库A和B.全部内容,希望文章能够帮你解决objective-c – 重复符号:在静态库B中包含静态库A,在XCode项目中也包含库A和B.所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1068681.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存