缺少两个dylib,但没有Xcode链接错误



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

然而,尽管如此,即使在Clean之后,该应用程序也会在SIM卡和设备上编译并运行,而不会出现错误。不知怎的,SQLite库正在被链接,但这里有什么魔力在起作用呢?

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

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

相关内容

最新更新