2015-12-06 31 views
0

我被一個荒謬的基本簡單問題困住了,這個問題現在讓我瘋狂了好幾天!不能在iOS項目中使用在另一個具有相同設置的項目中工作的庫

這裏的故事:

  1. 我有一個從建立時,我用它停我的項目第三方庫。
  2. 我有另一個示例項目,它使用了這個庫,並且正在成功構建。
  3. 我已經在Xcode中檢查了所有(字面上都是)"Project Build Settings""Target Build Settings"的構建設置,並且一切看起來都一樣。
  4. 這裏的截圖爲這兩個項目的生成設置:

工作項目:Working Build Settings

不工作項目:Not Working Build Settings

  • 下面是截圖爲鏈接器錯誤: Linker Error 1 Linker Error 2 enter image description here
  • 我已經搜索並查看了所有的lipo:can't open input file錯誤問題和ld: symbol(s) not found for architecture armv7錯誤問題,但沒有一個答案似乎適用於我。請不要只參考Google搜索結果。

  • 我試圖清理項目,刪除並重新添加文件到目標,在這兩個項目的同步鏈接的框架,消除得出的數據,改變build active architecture only setting,和許多其他的事情上提出的其他問題。

  • 由於相同的庫文件正在編譯和鏈接成功在相同的設備和Xcode和SDK,請不要提出像「請求供應商的更新版本的庫與ARM64兼容等」的建議。

  • 我在OS X El Capitan上運行Xcode 7.1,如果需要仔細查看項目,我甚至可以提供TeamViewer Access。

  • 任何幫助reaaaaally讚賞,我真的堅持這一點。

    預先感謝您。

    +0

    你可以添加一個你的'頭部搜索路徑'和'框架搜索路徑'也'庫搜索路徑「? –

    +2

    一種可能性:你在工作項目中是否有.cpp或.mm文件,但沒有失敗的文件? –

    +0

    主文件是.mm。我應該重命名其他項目的主文件嗎? –

    回答

    2

    如果檢測到使用C++編譯的源文件,則Xcode僅在鏈接時包含標準C++庫。如果庫需要使用libC++(或類似的)解析某些符號,這可能會導致鏈接問題。

    解決方法是在項目中創建一個空的.cpp文件來愚弄Xcode。 (我更喜歡把一個「真正的」類變成.mm,因爲重構從來沒有用於Objective-C++。)

    相關問題