簡體   English   中英

未找到自動鏈接框架

[英]Auto-Linking framework not found

我已經創建了一個名為BTNavigationDropdownMenu的框架(ios 的 swift 項目)。 一切正常,直到我嘗試向我創建的分支中的最新版本添加依賴項。 無論我是通過 podfile 還是通過Carthage添加其他框架( DYBadge ),問題都是一樣的。

未找到自動鏈接框架DYBadge

作為DYBadge一部分的UIView擴展似乎有問題。

DYBadge在我正在開發的主應用程序中運行良好(我在應用程序目標中也需要它)。

下面的錯誤。 感謝您對正確方向的任何提示。

ld:警告:未找到自動鏈接框架 DYBadge 架構 x86_64 的未定義符號:“(DYBadge 中的擴展):__ObjC.UIView.getBadge() -> DYBadge.DYBadge?”,引用自:Demo.BTNavigationDropdownMenu.updateBadge(text: Swift.String, at: Swift.Int) -> () in BTNavigationDropdownMenu.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

Xcode 無法找到您的框架,因為FRAMEWORK_SEARCH_PATHS可能未設置或錯誤(發生在我身上,因為我移動了Info.plist文件)。

您可以通過進入目標並調整構建設置來解決此問題。 只需在其中搜索FRAMEWORK_SEARCH_PATHS並添加正確的$(PROJECT_DIR)/Carthage/Build/iOS ,通常是$(PROJECT_DIR)/Carthage/Build/iOS (對於 iOS 項目)。 $(inherited)也應該作為第一個條目在那里。

這是評論中@user3122959 回答的帖子,它幫助我和其他人解決了這個問題,並被要求作為這個問題的答案。

試試這個過程——

  1. "Cmd + Shift + K"shift + cmd + alt + k進行清理,並退出 Xcode。
  2. 刪除緩存 在終端運行"rm -rf ~/Library/Developer/Xcode/DerivedData"
  3. 打開項目並re-build

我在從測試中訪問 3rd 方框架時遇到了這個問題。 這是我修復它的方法。

  1. 在 Xcode 中,轉到: Your Unit-Test target > Build Phases > Link Binary With Libraries

  2. 在 Finder 中轉到: Carthage > Build > yourframework.Framework

  3. 將框架拖入構建階段,然后清理(cmd - shift - K)。

如果您使用的框架在 false 上啟用了 Bitcode,這也可能是一個錯誤。 只有當所有框架都啟用了 Bitcode 時,Bitcode Enabled 才能為 true。 轉到您的目標構建設置並禁用位碼。

如果您在一個工作區中使用 Carthage 和多個項目,則必須向您的主 Carthage 文件夾添加符號鏈接。 這將取決於你有什么結構,但例如,如果你有

項目 -> 迦太基

Project -> Frameworks -> MyImbaFramework 而不是 cd 在 MyImbaFramework 文件夾中的終端並運行

ln -s ../../Carthage Carthage

就我而言,Bitcode 存在問題,但 Xcode 無法給出准確的錯誤診斷,因為項目框架引用也以某種方式混亂。 運行框架測試工作正常,但存檔會出現自動鏈接錯誤。

從項目中刪除了所有框架引用,包括它們所在的Frameworks組,再次添加它們解決了引用問題,然后我遇到了位碼問題,我在目標框架上禁用了該問題,然后才成功存檔

我遇到了類似的錯誤,此頁面上的所有建議均無效。 它發生在指向我的測試 iPhone 時嘗試創建存檔時,當我將其更改為“任何 iOS 設備”時,它可以正常工作。 我懷疑這與最近添加對 Apple Silicon 支持的更改有關,但我不確定如何。

確保您沒有設置將 XCTest 的 TargetMembership 導入主目標的測試文件,而是導入測試目標 :-)

希望這對某人有幫助,這對我有用

rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf Pods
rm Podfile.lock
pod cache clean --all
pod install --repo-update

並清理構建文件夾

XCode > 產品 > 清理構建文件夾

或者

⌘ Command + ⇧ Shift + K

然后關閉 XCode 並再次清除派生數據

rm -rf ~/Library/Developer/Xcode/DerivedData

對我來說,問題是在將我的項目轉換為使用 Cocoapods 之前,我已經設置了“其他鏈接器標志”設置。 為了解決這個問題,我將該字段更改為使用$(inhereted) ,之后一切正常。

在此處輸入圖片說明

對我來說,這修復了它:

轉到項目 > 目標 > 構建設置(選項卡)> 構建選項(標題)

Enable Testing Search Paths設置為Yes

立即備份並運行。 老實說,不確定這意味着什么,但它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM