在Xcode 4中将静态库链接到iOS项目


76

我有一个AQGridView可编译成静态库的项目(),但似乎无法将其添加到我的项目中。

将项目拖到我的项目中会创建一个工作区,如果我尝试libAQGridView.aDerivedData目录链接文件,它不会将其识别为库。我不确定自己在做什么错。

这是AQGridView项目。有谁特别知道如何在Xcode 4项目中使用它?


1
两年后,您以29票对我投了反对票。最重要的是,您刚才所做的陈述没有任何意义。
马特·哈德森


没有比这里更好的解释了:链接静态库
Subham93

Answers:


94

我这样做如下:

  1. 拖入静态库项目。如果您已在Xcode中打开静态库项目,请立即将其关闭。
  2. 在项目导航器(我要添加静态库的项目)中选择主项目,然后在编辑器的左侧列TARGETS标题下,选择主项目的目标并导航至Build Phases选项卡。
  3. 单击“ +”作为“目标依赖关系”,然后从添加的静态库项目中添加库图标目标依赖关系。
  4. 单击“ +”,将链接与库链接起来,并添加“ Workspace”文件夹下的库图标。
  5. 如果这是在静态库项目本身中链接标题的方式,则可能还需要为静态库项目的标题输入标题搜索路径。

如果您在主项目的项目导航器中没有看到静态库项目嵌套在主项目下,则最可能的原因是静态库自己的Xcode项目仍处于打开状态。退出Xcode并打开其中包含嵌套静态库项目的主项目,而不打开原始静态库项目本身,您应该看到它在您的主项目中显示为嵌套项目。


17
这似乎可以正常工作,但是由于某种原因,该库未显示在“目标依赖项”下。它显示在“链接二进制文件与库”下,而不显示在“目标依赖项”下。我不知道为什么它不会出现。
马特·哈德森

2
原来该项目必须嵌套,这将解决显示的“目标相关性”问题。
马特·哈德森

1
必须链接到库的主项目,以及包含标头的文件夹的路径(如果要选中递归框,则指向包含该库的所有源的文件夹路径)。
哈勒2012年

1
您应该将静态库拖到哪里?我的项目中没有可以接受拖动对象的面板...
zakdances 2013年

2
您无需拖动静态库,而是将静态库Xcode项目在项目导航器窗格中的主要蓝色项目图标或其Finder图标拖到要添加到其的Xcode项目的项目导航器窗格中的主要蓝色项目图标上。
Halle 2013年

15

Xcode菜单>视图>实用程序>文件检查器

选择静态库文件,然后在“标识和类型”中将“文件类型”设置为“ Mach-O对象代码”。


哇,这真是个奇怪的解决方案,但是对我来说却是完全有效的。谢谢!我的用例是将.a静态库复制到Frameworks构建中,并与之链接,这在重新安排项目几之后开始引发“找不到图像”库错误。由于以上原因,现在不再。
Markus Amalthea Magnuson 2015年

5

应该使用工作区来简化此工作,但是我不知道它们会这样做。我的方法是创建一个工作区,添加我的主项目,添加我的库项目。然后进入主项目的构建阶段,并在“使用库链接二进制文件”部分中添加库,然后添加库。那应该是所有必要的,至少这是我的阅读,但不是。我要做的是进入Xcode首选项,然后进入“源树”窗格。添加指向静态库标题的源树,然后返回项目的构建设置,然后返回“标题搜索路径”键,然后在其中输入$ {foo},其中“ foo”就是您所说的源树。

那就是对我有用的方法,尽管我不知道这是最好还是最简单的方法。


如果您拥有最新版本的XCode,那么绝对可以这样。这比挖掘项目内部和构建目录要容易得多。
zakdances

5

在finder中找到.a文件,然后将其拖到项目中。

选择“将项目复制到目标组的文件夹(如果需要)”,然后将标题添加到项目中。

现在,XCode 4应该会自动为您链接该框架。

库在您的项目中应如下所示:


1
我确实做了那件事,但它没有将它识别为图书馆。该图标仅显示页面,而不显示库指示符。
马特·哈德森

当然不是。它不应看起来像框架。这并不意味着它没有链接。
理查德·罗斯三世

框架带有黄色图标,看起来像罗马帝国建造的白色图标是图书馆:)
Matt Hudson

3

请遵循Apple的文档

简单来说:

  1. 将目标链接到库。
  2. 在目标的构建设置下添加-ObjC到“其他链接器标记”(OTHER_LDFLAGS)。

另外,由于该库在目标的依赖项中不可见,因此我需要将该库添加到主项目的方案中。


0

哈雷的答案对我有用一点:

  1. 检入静态库项目的“构建设置”的“私有(或公共)标头文件夹路径”值,然后将其复制。
  2. 根据您使用的include指令,将复制的值添加到客户端项目的Build Settings 标头搜索路径User标头搜索路径
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.