【问题标题】:Xcode -dynamic not specified static library errorXcode -dynamic 未指定静态库错误
【发布时间】:2014-04-14 18:44:14
【问题描述】:

我在 Xcode 中有一个子项目,它创建了一个由父项目引用的静态库。在 iOS 7.1 和 Xcode 5.1 发布之前一切都很好,突然我收到以下警告。

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: -dynamic not specified the following flags are invalid: -ObjC 
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/lib/libsqlite3.0.dylib is a dynamic library, not added to the static library

有人知道我需要做什么来修复这个警告吗?

【问题讨论】:

  • 这里也一样。尝试添加 -dynamic 标志,导致更多错误和警告。我希望有人可以对问题的深度添加一些见解。因为将标志列表从编译器版本更改为另一个似乎太基础了。
  • 是的,我也试过了......同样的问题。将动态库标记为可选也没有效果。这是另一个论坛上提出的解决方案。

标签: ios xcode compiler-errors compiler-warnings build-error


【解决方案1】:

我认为解决方案在于动态库和静态库的基本概念。就库而言,动态库(在您的情况下为 libsqlite3.0.dylib)是系统库,您无需将它们添加到静态库中!您需要做的就是将它们的引用添加到您想要在(您的应用程序)中使用它们的最终Target中。

所以,简而言之:尝试从您的静态库中删除对 sqlite3.0.dylib 的引用(我猜您正在顶级应用程序中使用另一个项目)并将其添加到您的应用程序(不是静态库)中,然后您重新可能很好去。 (解决了我的问题)

[编辑]: 请提交您的项目的 git 或做任何您做的事情来从您的项目中进行备份,在删除这些动态库并且不删除项目的派生数据后,Xcode 可能会无缘无故地破坏您的项目解决不了问题。

【讨论】:

  • 我会试一试,但是在我的情况下,构建我的静态库的项目需要自己编译,即即使它不包含在另一个项目中。如果我从中删除动态 sqlite 库,这将中断。
  • 将您的答案标记为正确,因为它似乎确实是解决方案,我仍然认为这是 Apple 在 .1 版本中做出的奇怪更改!
  • @M.Porooshani 你说“将它添加到你的应用程序(不是静态库”) - 这是什么意思?你在 Xcode 中具体在哪里添加库?“将它添加到你的应用程序”令人难以置信含糊而无益。
  • @autibyte,很抱歉你没明白,但请再读一遍答案(尤其是括号)。并感谢您的反对!
  • @M.Porooshani 随时。再次通读一遍,仍然不清楚需要从“Link Binary with Libraries”中删除动态库并将其作为动态标志添加到根级应用程序中。
猜你喜欢
  • 2013-01-20
  • 2016-06-29
  • 2012-05-18
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 2013-12-02
  • 2015-03-07
  • 2013-08-05
相关资源
最近更新 更多