【问题标题】:Missing two dylib, but no Xcode linking errors缺少两个 dylib,但没有 Xcode 链接错误
【发布时间】:2016-03-25 07:05:20
【问题描述】:

我正在使用 Xcode 7.3 更新旧的 iOS 应用程序。部署目标是 7.0,之前的版本是为 iOS 8 构建的。包含大约十几个框架(例如,Security.framework)以及 sqlite3.0.dyliblibSystem.B.dylib 在项目导航器中显示为红色,因为它们无法找到。事实上,“在 Finder 中打开”没有结果。

然而,尽管如此,应用程序在 SIM 卡和设备上编译和运行没有错误,即使在 Clean 之后也是如此。不知何故,SQLite 库正在被链接,但这里有什么魔力?

我想我应该只添加 libsqlite3.0.tbd 但我想了解发生了什么,以防我在 iOS 7 和 8 下破坏某些东西(为什么没有链接错误?)。我需要libSystem.B.dylib——需要吗?

【问题讨论】:

    标签: ios xcode dylib


    【解决方案1】:

    sqlite3.0.dyliblibSystem.B.dylib 是系统库。项目导航器和 dylib 搜索路径是不同的东西。 Project navigator 顾名思义是用来导航项目的,因此它或多或少是开发人员轻松导航项目的工具。通常它还会显示您链接的库,但它们保留了这些框架的路径,并且该路径在您的情况下不再有效。另一方面,您可以在Build settings 中找到Framework Search Paths。有链接器搜索预期库的路径。但是由于您的库来自系统,您甚至不需要指定Framework search path,因为系统库的路径是默认设置的,因此对于系统库,您只需指定要将它们链接到您的项目。因此,您可以安全地从项目导航器中删除那些红色库。只要在您的设置中指定要使用Link Binary With Libraries 中的那些库,整个事情应该可以工作。

    【讨论】:

    • 这是有道理的。 Link Binary with Libraries 列表不包括 libSystem.B.dylib(或 libSystem.dylib)。我记得图书馆与 SIM 有关,但几年前。这是否早于 iOS 7 并且不再需要?另外,Gamekit 在框架列表中,但不在 Link Binary With Libraries 中——我应该如何处理?
    • 我认为你是对的,你不应该需要 libSystem.B.dylib,我想你肯定知道你需要这些库。如果您在Link Binary with Libraries 中没有 Gamekit,您可以从技术上将其删除,因为您的项目中没有使用它。如果你的项目是旧的,你可能有一些游戏工具包#imports,如果你这样做会给你错误。删除它们,您应该会没事的。
    猜你喜欢
    • 1970-01-01
    • 2015-01-18
    • 2011-05-22
    • 2013-06-30
    • 2012-08-11
    • 1970-01-01
    • 2013-10-30
    • 2016-06-04
    • 1970-01-01
    相关资源
    最近更新 更多