2013-12-20 38 views
5

我正在尝试编译使用Xcode使用多个库的应用程序。为此,我创建了一个脚本,将我所有的.dylibs从我的计算机上的位置复制到我的应用程序包中的Frameworks文件夹。 添加必要的linker flagsheader search paths后,我现在必须添加我的library search paths在应用程序包中使用Dylib

因为我复制了我的应用程序包的Frameworks文件夹中的所有库,我推断我必须将$(FRAMEWORKS_FOLDER_PATH)添加到library search paths设置。添加此失败,因为链接器无法找到该目录。

我猜测Frameworks文件夹是在搜索library search paths设置后才创建的。如果是这样,我该如何使用我在应用程序包中复制的库?

+0

您的问题是编译失败,或者编译后应用程序无法运行? – sjs

+0

它不会编译,因为它找不到这些库。 – Cubia

回答

2

.dylib文件放在Frameworks文件夹中,这样做是为了让应用程序能够在运行时找到它们。dylib文件是动态链接的,因此应用程序会在运行时加载它们。

在编译时将Xcode设置为链接到.dylibs应该只是将Finder中的.dylib拖拽到您的Xcode项目中。我已经用一个简单的示例项目展示了这个示例项目,该项目在附加的截图中使用了libxar.dylib。

Example of a dylib in an Xcode Project

+0

所以我必须有2份我的dylib文件的权利?项目文件夹中有一个副本,而我的应用程序包中有另一个副本?如果我想使用应用程序包中的dylib文件,还必须将运行路径搜索路径设置为$(FRAMEWORKS_FOLDER_PATH)? – Cubia

+1

@Cubia生活在您的应用程序包中的副本就在那里,因此,当您将应用程序包分发给其他人时,他们将获得dylib的副本,以便他们可以真正运行应用程序。如果dylib的安装路径设置正确,则不需要设置搜索路径。你是自己制造dylib,还是从别人那里得到它们? – sjs

+1

我自己构建了dylib,并确保将dylib ID设置为@executable_path /../ Frameworks/libmydylib.dylib。这是正确的做法吗? – Cubia

相关问题