2011-08-03 21 views
0

我在iPad應用程序中遇到上述錯誤。我在我的應用程序中使用xcode 4(通過鏈接二進制文件與庫)添加一個靜態庫。當我bulid應用程序得到錯誤像在xcode 4中添加靜態庫後發生Apple Mach-o(id)錯誤

LD:重複的符號_OBJC_METACLASS _ $ _可達中/Users/indiait-supportservices/Desktop/Universal/lib/simulator/libSecurLib.a(Reachability.o)​​和/用戶/ indiait -supportservices/Library/Developer/Xcode/DerivedData/ReceiverForiOS-avuvmyuaipqegxbkwsrfbymgadjj/Build/Intermediates/ReceiverForiOS.build/Debug-iphonesimulator/myApp iPad.build/Objects-normal/i386/Reachability.o for architecture i386 collect2:ld returned 1退出狀態 命令/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2失敗,退出代碼1

我添加了該靜態庫所需的鏈接器標誌以及「其他鏈接器fags」中的-all_load鏈接器標誌,並且還添加了所有必需的框架。而且在我的應用程序中也沒有重複的符號。我嘗試使用編譯器LLVM GCC 4.2更改爲GGC 4.2(以及全部)。我搜索了堆棧溢出中的所有類似線程,並嘗試了所有提到的解決方案。仍無法解決問題。是否該靜態庫未正確鏈接?有沒有其他方法可以在xcode 4中添加庫?

任何人都可以幫我嗎?

感謝ü...

+0

如果你做一個乾淨的構建是否解決了這個問題? – ThomasW

+0

也可以在添加庫時注意複製庫複選框未被選中或被選中。如果它被檢查,而不是使其未經檢查,然後嘗試建立你的項目後清理它.. – SJS

+0

@ThomasW:謝謝你的迴應..我打掃,然後建立,仍然是問題仍然存在 – Mike

回答

0

如果這不符合您的構建問題,那麼它出現的問題是,你都直接使用可達性,它也被用於通過libSecurLib.a。如果您從項目中刪除Reachability代碼(只是.m),您應該可以構建,但libSecurLib.a中使用的Reachability版本可能與您的標題使用的版本不同,因此您可能會得到其他錯誤。

解決此問題的一種方法是重命名您的項目包含的Reachability版本。

+0

非常感謝托馬斯..它的工作 – Mike