未加载第 3 方框架库:“找不到图像”

Posted

技术标签:

【中文标题】未加载第 3 方框架库:“找不到图像”【英文标题】:3rd party Framework Library not loaded: 'Image not found' 【发布时间】:2016-10-24 19:13:48 【问题描述】:

我正在将框架升级到最新版本。较早的集成(> 2 年)在项目中直接复制了框架;现在让 cocoapod (0.39.0) 使用 xcode (7.2.1) 和 Objective-c 项目将框架与项目集成。

运行时出现如下错误:

dyld: Library not loaded: @rpath/name.framework/name
Referenced from:

/Users/xyz_xyz/Library/Developer/CoreSimulator/Devices/xxxxxxx/data/Containers/Bundle/Application/xxxxxxx/appname.app/appname
Reason: image not found

“Pod”xcode-project 具有正确的引用,并且框架存在于相应的文件夹中

发现 nameFramework 在任何构建阶段都没有链接(添加)。我是使用 cocoapods 的新手,不确定在 Xcode 构建设置中需要进行哪些更改才能从直接嵌入式框架过渡到基于 cocoapods 的集成。

如何解决“dyld: Library not loaded”错误? 我应该在构建期间使用哪个阶段来引用 name.Framework,因为它没有生成? 如何将包资源从 Pod 复制到项目?拖放 Pods/name/Resources/name.bundle 会提示“如果需要,请复制项目”对话框。

[更新] 当使用示例或新项目时,使用 cocoapods 集成可以正常工作。导致问题的原因是当前项目设置中的某些内容。

Pod 文件:

platform :ios, '8.0'

# use_framework for swift based pod integration. requires cocoapod 0.39.0
#use_frameworks!

pod 'GTMOAuth2'
pod 'Typhoon'

pod 'Alamofire'

# Issue with name
pod 'name', podspec:'https://customers.pspdfkit.com/cocoapods/.../latest.podspec'

target :ABC do
        pod '...', '~>1'
end

target :XYZ do
        pod '...', :path => 'submodules/...'
end

[更新] - 升级到 CocoaPods 1.0.1 并修改 Podfile 以取消注释 use_frameworks!,并进行 0.39.0 到 1.0.1 迁移所需的其他更改。这是更新后的 Podfile。

platform :ios, '8.0'

# use_framework is required for dynamic links (swift) based pod integration.
use_frameworks!

target 'XYZ' do
    pod 'GTMOAuth2'

    pod 'Alamofire'

    pod 'name', podspec:'https://customers.name.com/cocoapods/.../latest.podspec'

    target :XYZ-A do
            pod 'XYZ-iOS-SDK', :path => 'submodules/xyz-ios-sdk'
    end
end

通过添加 $(inherited) 标志(如果适用)修复了以下错误

[!] XYZ-v2 [Release] 目标覆盖在 ... 中定义的 OTHER_LDFLAGS 构建设置

以上改动后的进展,Pods/Target Supported Files/XYZ-v2/有Pods-XYZ-v2-frameworks.sh和resources.sh;早期的 frameworks.sh 丢失了。以下是 framworks.sh 的部分内容,其中包含复制说明。

if [[ "$CONFIGURATION" == "Debug" ]]; then
  install_framework "$BUILT_PRODUCTS_DIR/GTMOAuth2/GTMOAuth2.framework"
  install_framework "$BUILT_PRODUCTS_DIR/GTMSessionFetcher/GTMSessionFetcher.framework"
  install_framework "$BUILT_PRODUCTS_DIR/GoogleAPIClient/GoogleAPIClient.framework"
  install_framework "$BUILT_PRODUCTS_DIR/Mantle/Mantle.framework"
  install_framework "$PODS_ROOT/PSPDFKit/PSPDFKit.framework"
  install_framework "$BUILT_PRODUCTS_DIR/SSKeychain/SSKeychain.framework"
fi

// and for "Release" & "Distribution" as well..

现在我正在尝试解决构建时的编译错误,这些错误与静态库与动态库包含有关。

/path../Pods/SSKeychain/Sources/SSKeychain.h:65:1:“SSKeychain”类的接口定义重复

[更新]发了一个新问题:CocoaPods 1.0.1 Redefinition of 'XYZ', Redefinition of enumerator 'ABC', Duplicate interface definition for 'MNO'

相关:

OS X Framework Library not loaded: 'Image not found' 似乎相关:https://github.com/CocoaPods/CocoaPods/issues/4772

【问题讨论】:

【参考方案1】:

尝试使用use_frameworks!(目前已被注释掉)。 PSPDFKit 是一个动态框架,因此您需要启用此选项。

还可以尝试使用最新的 Xcode 和 CocoaPods >= 1.0.0。旧版本可能无法正常工作。

您可以在此处找到有关通过 CocoaPods 集成 PSPDFKit 的更多信息:https://pspdfkit.com/guides/ios/current/getting-started/using-cocoapods

如果所有这些都没有帮助,您可以通过https://pspdfkit.com/support/request直接联系 PSPDFKit 开发人员

【讨论】:

昨晚,我确实做了类似的改变;今天根据您的建议用结果更新了问题。现在与新的编译器错误作斗争。谢谢朱利安。 现在,我试图解决的问题并非特定于 PSPDFKit。它从升级 PSPDFKit 开始,但变成了其他东西。也许我应该专门编辑原始问题或新问题的帖子。 添加了一个带有特定问题的新帖子。 ***.com/questions/38003915/…【参考方案2】:

dyld 上的相同问题:未加载库:@rpath/TwilioAccessManager.framework/TwilioAccessManager 原因:找不到图片

我遇到了同样的问题,这已经为我解决了。我将所需的框架状态更改为可选。

【讨论】:

以上是关于未加载第 3 方框架库:“找不到图像”的主要内容,如果未能解决你的问题,请参考以下文章

Apple Review - 未加载库:CoreNFC:找不到图像

libmpc - dyld:库未加载 - 原因:找不到图像

如何修复 dyld:库未加载... 原因:找不到图像 中止陷阱:6?

dyld:库未加载:@rpath/XCTest.framework/XCTest 原因:找不到图像

使用 flask_mysqldb 获取“未加载库:libssl.1.0.0.dylib”、“原因:找不到图像”

未加载库:@rpath/libmysqlclient.21.dylib 原因:找不到图像 Django 迁移错误使用 mysqlclient DB 驱动程序和 MySQL 8 与 macOS