gpt4 book ai didi

ios - Xcode:静态库的多个版本

转载 作者:行者123 更新时间:2023-11-29 10:37:19 24 4
gpt4 key购买 nike

我正在尝试在 Xcode (6.0.1) 中创建一个使用静态库的两个版本的项目。因此,我创建了一个类似于此的目录结构:

+ include
|-- VersionA
|-- foo.h
|-- bar.h
|-- VersionB
|-- foo.h
|-- bar.h

+ lib
|-- VersionA
|-- foo.a
|-- bar.a
|-- VersionB
|-- foo.a
|-- bar.a

两个目录中的头文件 foo.h 和 bar.h 相似,而可执行文件不同。为了包含某个 header ,我(非递归地)将包含目录添加到搜索路径中,如下所示:

#include "VersionA/foo.h"   // or this:
#include "VersionB/bar.h"

现在的问题是:Xcode 如何决定为某个头文件链接哪个 Mach-O fat (.a) 文件?这项任务如何进行,我如何影响它?

编辑:

我没有收到重复的符号链接(symbolic link)错误,尽管链接器查看了两个 lib 目录。由于头文件包含像

这样的守卫
#ifndef FOO_H
#define FOO_H
...

我也没有收到关于重新定义的错误。如果我改变一个包含守卫即

#ifndef FOO_H_VERSION1

编译时有错误(语义问题,“FOO_SOMETHING”的重新定义)。这对我来说很有意义,表明复制头文件可能不是最佳做法。

不过,对于我的项目,我需要两个版本的静态库。实现这一目标的合理方法是什么?

最佳答案

包含头文件不会自动包含或链接库 - 您在构建阶段的“将二进制文件与库链接”部分中指明要链接哪些库。

在您的情况下,您只需添加所有库,然后在相关位置使用相应的头文件。

但是,您说过这些是同一库的不同版本。如果你的库包含同名的方法,链接器会提示。考虑到这一点,您应该重新考虑是否真的有必要包含同一个库的不同版本——如果一个/两个库有问题阻止您只使用一个,它可能更有用(并减轻压力,最终)尝试解决该问题。

关于ios - Xcode:静态库的多个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26230462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com