2

我有一个库 ( lib.a) 和一个头文件 ( lib1.h)。问题是库太大,只有一小部分用户需要它。

  • 是否可以在没有库的情况下构建我的 Xcode 项目?目前我得到:

ld: 找不到 -llib 的库

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

  • 是否可以防止使用 Xcode 项目中不存在的库?我找到了以下内容,但我不确定它是否足够(假设我可以在没有 lib 的情况下构建项目):

    if ([MyLibABC class]) { ... } else { NSLog(@"Add Lib.a"); }

边注:

在 Java 中,我会使用反射来调用库 ( lib.jar) 中实现的方法,如果库不存在,我会捕获ClassNotFoundException并显示错误消息或其他内容(缺少 lib.jar,请查阅文档)。

我的目标是> = iOS5。

4

1 回答 1

2

与支持动态库的桌面操作系统不同,iOS 仅支持静态库。解决这个问题的唯一方法是构建两个目标——一个使用库,另一个不使用。

您可以使用条件编译从同一组源构建两个目标。在有条件地编译出对“大库”的引用的版本中,将没有对它的引用,因此链接器不会抱怨缺少引用。

于 2013-05-01T01:55:53.087 回答