【发布时间】:2012-05-25 07:04:42
【问题描述】:
我有一个 xcode 工作区,其中设置了一些依赖于 Boost 1_49(构建为 iOS 框架)的项目库、一个静态框架(来自https://github.com/kstenerud/iOS-Universal-Framework 的假框架),然后是一个使用静态框架。
测试应用还使用了 boost。
我想做一些测试,看看是否可以让测试应用在与框架不同的 boost 版本上运行。通过这种方式,我们可以将框架作为一个独立的框架交付,而无需对需要在使用我们框架的应用程序中使用的 boost 版本进行任何限制。
因此,我将测试应用设置为使用 boost 1_48,并将框架设置为使用 1_49。我进行了设置,以便所有使用 boost 的项目都 not 将 boost 框架链接到二进制文件中,而我拥有的框架项目实际上根本没有在其中引用 boost;它仅引用其依赖项生成的所有 .a 库。
项目A
- Boost.framework 1_49
项目B
我的框架
- 项目A.a
- 项目B.a
TestApp
- MyFramework.framework
- Boost.framework 1_48
然后我在框架和测试应用程序中添加了一些代码来打印出 boost 版本。两个地方都打印出版本 1_49,而不是 1_48。另外,我尝试在测试应用程序中添加一些代码以进入boost(例如,只获取当前时间),xCode调试器将我带入ProjectA中包含的boost版本,而不是进入ProjectA中包含的boost版本测试应用程序。
链接发生了什么?如何让应用程序仅使用 TestApp 中包含的 boost 版本?
谢谢,
利隆
【问题讨论】:
标签: c++ ios xcode frameworks static-linking