2013-12-20 78 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

相關問題