2011-09-20 64 views
3

我在xcode工作區中有2個項目。一個是靜態庫,另一個使用靜態庫。iphone - 「.../libtool:無法找到文件:-lxml2」

在靜態庫中,我添加了在主項目中使用的GDataXMLNode.h和GDataXMLNode.m文件。 GDataXMLNode.h是一個公共文件,因此它在主項目中可見。我還將這兩個項目的目標與libxml2.dylib鏈接起來。我還在頭部搜索路徑和用戶頭部搜索路徑中包含位置/ usr/include/libxml2。

儘管這些,我得到一個蘋果的Mach-O庫錯誤:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: can't locate file for: -lxml2 
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: -lxml2 is not an object file (not allowed in a library) 
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libxml2.dylib is a dynamic library, not added to the static library 
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libxml2.dylib is a dynamic library, not added to the static library 
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libz.dylib is a dynamic library, not added to the static library 
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool: file: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libz.dylib is a dynamic library, not added to the static library 
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool failed with exit code 1 

你知道我怎麼能解決這個問題?

+0

現在這很快,儘管我從昨天開始嘗試。我設法通過從構建設置中刪除它來修復它: OTHER_LDFLAGS =「-lxml2」; 祝你一切順利! – Bogdan

回答

9

我最近有完全相同的錯誤。正如您發現的那樣,從Build Settings的「Other Linker Flags」中刪除「-lxml2」幫助解決了錯誤。當你建立一個靜態庫時,這是真實的。您需要包含在實際包含您的靜態庫的任何目標中的鏈接器標誌(「-lxml2」)。例如,如果您像我一樣爲靜態庫創建了單元測試(即MyStaticLibraryProjectTests),那麼您需要確保將鏈接器標誌添加到MyStaticLibraryProjectTests目標,但不添加到實際的MyStaticLibraryProject目標。通常,當我查看「構建設置」選項卡時,通常會忘記選擇特定的目標。我通常假設,如果我點擊構建設置僅用於整個項目的大藍色項目圖標,但在修改這些設置時選擇正確的目標非常重要。

在大多數項目的早期階段,通常只有一個目標,但隨着您更先進,每個項目可能會有多個目標。希望有所幫助。