ChatGPT解决这个技术问题 Extra ChatGPT

dyld:库未加载:@rpath/libswift_stdlib_core.dylib

将 Swift 类添加到旧 Xcode 项目后,我收到此错误。

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib

我怎样才能让项目再次运行?

您可能还想查看 stackoverflow.com/questions/38364320,它显示了如何使用 otool 进行调试
2017 - 令人难以置信的是,重启 Xcode 为我解决了这个令人发指的问题。

E
Eugen Sunic

对我来说,以前的解决方案都没有奏效。我们发现 Build Settings 中有一个标志 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES(在早期版本中:“Embedded Content Contains Swift Code”)需要设置为 YES。默认为否!


这也为我修复了它,我将扩展名的设置切换为 true。该项目是 objc,但 ext 很快,并且从一开始就无法正常工作
这也是我的决心。我有一个现有的 iOS 应用程序项目 (ObjC),我正在向其中添加 Today Extension(项目中的新目标,扩展是主应用程序的插件)。我必须进入应用程序目标设置并启用构建设置和中提琴......问题就消失了。有道理,但考虑到 Xcode 6.0 自动为您配置了多少其他东西,很遗憾这个基本选项被忽略了。
这解决了我的问题 - 我们有一个包含大量 ObjC 的旧项目,我们最近开始将 Swift 添加到该项目中。尽管 IPA 已构建并包含 Swift 库,但它在某些 iOS7 设备上无法运行,直到检查了此构建设置并且我们做了一个新的 IPA。这适用于我们所有有问题的设备。
除此之外没有任何工作。你是一个怪异的巫师,我的好先生!
嵌入内容包含 Swift 代码 不推荐使用 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
m
matt

如果在将 Objective-C 项目转换为开始使用 Swift 期间出现问题,则可能会发生此错误。问题是链接器构建设置从未正确配置,因此您必须手动完成。查找 Runpath Search Paths 构建设置并将其设置为:

$(inherited) @executable_path/Frameworks

https://i.stack.imgur.com/d6l8O.png

编辑:我还应该补充一点,最近出现了大量完全由其他原因引起的错误——Apple 对 Swift 本身进行了更改,可能从 Xcode 6.1 或 6.1.1 开始。唯一的解决方案似乎是退出 Xcode,在 Keychain Access 中销毁您的证书,转到会员中心并删除所有证书和配置文件(商店中应用程序的配置文件除外 - 您无法删除它们),然后启动从头开始的整个证书申请过程。


为我工作。升级到最新的Xcode版本,发现我项目中的这个设置路径是通向旧版本的。
工作!你救了我的一天!我在带有 xcode 6 GM 的目标 C 中使用 swift GitHub 控件。谢谢。
这也对我有用。重新启动 Xcode 没有。
为我工作。顺便说一句,我在错误消息的末尾收到“原因:找不到图像”。
感谢上帝!就在那里!
A
Adam Fox

我不太确定为什么这个问题被否决了,当我第一次尝试将 Swift 用于现有项目时,我也遇到了这个问题。 Xcode 重启也为我解决了这个问题。


我正在尝试在一个新的 iOS 项目中使用 swift,但在尝试在 iOS 8 设备上运行时出现该错误,但在模拟器中却没有。重新启动 Xcode、我的笔记本电脑或我的手机并不能解决问题。还有其他解决方案吗?
不幸的是,这对我在 Beta 4 下不起作用,我试图启动一个使用基于 Swift 框架的 Mac 应用程序。
请在您的答案中包含@Developer 链接,因为它确实有帮助。
试试这个,但也要干净。
A
Alistra

我在这个问题上搜索了很长时间。导致此问题的原因有多种。

如果您在 Objectice C 项目中遇到 Swift 代码/库时,您应该尝试解决方案 1-2-3

如果你在一个新的 Swift 项目中遇到这个问题,解决方案 4 最适合你。

解决方案1:

重启 Xcode,然后重启电脑和 iPhone

解决方案2:

转到项目构建设置并将 Always Embed Swift Standard Libraries(以前为 Embedded Content Contains Swift Code)标志设置为 YES

解决方案3:

转到项目构建设置并将 @executable_path/Frameworks 添加到 Runpath Search Paths 选项

解决方案4:

如果以上都不起作用,这应该。如 AirSign's post 中所述,Apple 似乎是 ninja 修补证书

在内部证书

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR

他们添加了一个名为 OU 的新字段

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR

所以你应该重新创建证书和配置


广告 2:现在称为“ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES”(请参阅已接受答案下方的评论)。
我想添加... macOS 项目需要 @executable_path/../Frameworks,而 iOS 项目需要它,而中间没有 ..。如果您已将目标从一个操作系统转换到另一个操作系统,则更改此值很重要。
对我来说,如果没有“解决方案 3”,它就行不通。我在 10.3.X 上运行崩溃,但在 10.5.X 上没有运行(均使用 Xcode 12-beta 编译)。原因是 Swift 库现在包含在操作系统中,因此它们不需要嵌入到二进制文件中。但要在较早的操作系统上运行,您需要嵌入 Swift 库(“解决方案 2”),并将 @rpath 设置为 macOS 的 @executable_path/../Frameworks。在检查我的应用程序的包内容时,我看到 libswiftcore 库在那里(即嵌入的),但应用程序不知道在没有设置 rpath 的情况下在运行时在哪里找到它们。
C
C0D3

就我而言,我试图导入自定义框架并遇到类似的错误。原来我必须在嵌入式二进制文件中导入框架,而不是在链接框架和库中。

嵌入式二进制文件位于 Projects Settings -> -> General


拯救了我的一天!惊人的!
当我尝试使用用 swift 编写的编译框架时(而不是将源文件作为单独的目标嵌入),我看到了这个错误。上述解决方案也对我有用。
非常感谢,节省了我的一整天。
在尝试将部分用swift编写的框架链接到一个完全是objective-c的旧项目中之后为我工作。该设置实际上是在构建设置下。更多信息在这里:stackoverflow.com/questions/24163870/…
这是在目标设置下,而不是项目下,只是为了确定。
o
orta

对于在 Adhoc/Enterprise 发行版中遇到此问题的开发人员,

从开发门户创建生产证书,然后重新生成分发配置文件。在您的 Mac 上下载并安装它们。确保您在 Xcode 构建设置中选择了正确的配置文件并重新构建您的应用程序。

来源:https://devforums.apple.com/message/1022908#1022908


虽然此链接可能会回答问题,但链接会中断。因此,建议您包含链接中的关键部分。不建议仅链接答案。
为我的企业应用程序工作。谢谢!
s
skywinder

解决方案 5:

就我而言,accfews 的答案中提到的所有解决方案都非常有帮助,但没有一个奏效。我通过在项目目标的“常规”部分的“嵌入式二进制文件”部分添加我的 swift 库来解决我的问题。也许这是因为我在我的工作区中包含了我的 swift 框架?不管它现在编译什么!准备好斯威夫特,我来了!


好的,这似乎有效。我只是想为一个 swift 项目编写一个 swift 代码库。不知何故,我仍然想知道这是否正确。但是我很高兴它的工作。
我已将我的框架包含在“构建阶段”选项卡的“复制框架”部分中 - 但此处无法选择一个框架。 “General”允许选择这个其他框架并将其添加到构建阶段,然后应用程序构建和运行。奇怪的是,我仍然可以在模拟器上运行该应用程序。
谢谢克里斯托夫。像你一样,已经尝试了所有的解决方案,很明显不能直观地理解一个 swift 库不能简单地拖到一个项目到另一个项目。您显然需要将库放入嵌入式部分(也就是更清楚的 swift 模块,我怀疑可能还有其他类型的嵌入式内容)。即使 Xcode 可以很好地自动检测到它并为我们完成工作......但这不是我们心爱的 XCode 的任务;),绝对是在这里浪费我们的时间......
此外,如果该库已在列表中,请确保将其标记为“嵌入并签名”。这解决了我的问题。
A
Anton

Xcode 的简单重启为我解决了这个问题。


我要扇耳光下一个以重置 Windows 为乐的苹果迷
E
Eric

对我来说,问题是由于我的 Apple 全球开发者关系认证中心无效。

从这里下载:https://developer.apple.com/certificationauthority/AppleWWDRCA.cer

将其拖放到 Keychain Access 中,清理项目并运行。


这在我们添加 CloudKit 权利后开始发生。在此之前,我猜它并不关心 WWDR 证书无效。
l
lp_

我有一个 Obj-C 项目,我开始添加 swift 源文件。以下为我解决了这个问题:

链接:RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks Swift 编译器 - 代码生成:嵌入内容包含 SWIFT = YES

我刚刚从模板 Xcode 6.3 创建了一个新项目,并将项目设置与我的旧原始项目进行了比较。


s
stakahop

尝试按住 Alt,然后转到 Product -> Clean Build Folder...

希望它会帮助某人..


这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review
它发生在尝试在旧项目中添加一个新类之后。没有信息表明项目有多旧。因此,清除项目和强制刷新缓存是有意义的。旧项目也意味着证书很有可能同时发生变化,因为 Apple Production 和 Developer 证书每年都会过期。根据 Apple Technical Q&A at.developer.apple.com/library/ios/qa/qa1886/_index.html 了解错误的主要原因。developer.apple.com/library/ios/qa/qa1886/_index.html。同样的事情发生在我身上,Clean Build Folder 使项目再次运行。让人们尝试..
它发生在重新加载我的 iOs 证书之后。一个简单的清洁(产品菜单),一切正常;-)
工作完美。谢谢你。
j
jlyonsmith

发生这种情况的原因是多方面的。刚刚度过了一个有趣的周末,发现了另一个导致此问题的问题(代码签名的顺序),我想创建一个汇总答案,将所有可能的解决方案结合在一起:

将包含 Swift 代码的嵌入内容添加到项目中。如果您的应用包含 Swift 代码,则需要设置此标志。清洁项目。除了 Project > Clean 之外,您还可以删除 DerivedData 和 Build 目录。在 Preferences 下查看 DerivedData 的位置。构建应该在您的项目文件夹中。确保运行路径搜索路径包含 @executable_path/Frameworks。确保您的证书在 OU(组织单位)字段中包含您的 Apple Team ID,Apple 将为您添加此证书,只需撤销您现有的分发证书并创建一个新证书,下载,安装在 KeyChain 上,重新生成所有配置文件,下载这些和重建。 Xcode 重启。如果一切基本上都很好,但 Xcode 还没有到达那里。

那是容易的事。如果您正在执行自己的命令行构建,您可能会创建自己的 .ipa 文件以进行上传。在这种情况下,您需要确保以下内容:

确保 SwiftSupport/iphoneos 中的 Swift 文件版本与 Contents/YourApp.app/Frameworks 中的版本相同 因为 Swift 尚未在版本之间进行二进制兼容,所以您必须确保这些版本是您构建应用程序时使用的版本.您可以在 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos 下找到这些库。首先对库和框架进行签名。您需要先对库和框架文件(在 .app 文件夹中的 Frameworks 下)进行代码签名,然后对整个 .app 树进行签名。 .app 树必须使用 entitlements.plist 而不是框架进行签名。

希望当 Swift 3.0 发布时,我们不再需要将 Swift 与我们的应用程序捆绑在一起,这整个问题都会消失。


M
MacTeo

我在使用带有生产证书的 Ad Hoc(或企业)移动设备时遇到了这个问题。切换到开发证书和 mobileprovision 解决了这个问题。


这可能让您在开发中运行应用程序,但如果临时或企业配置文件不起作用,您将如何部署?
C
Community

我的项目是一个带有一些 Objective-C 类的 Swift 项目。使用旧的内部(企业)证书签名时,我遇到了同样的问题。

以下步骤为我解决了这个问题。

创建和使用新的证书和移动配置。 (参考 AIRSIGN 的博客)将 Runpath Search Paths 构建设置设置为:$(inherited) @executable_path/Frameworks。 (参考马特的回答)


p
picciano

解决方案 6:

在我们的案例中,企业分销证书已被吊销。生成新证书并更新配置文件解决了该问题。

(这个错误似乎有很多不同的原因。希望这对某人有所帮助。)


这解决了我的问题。天哪,试图解决这个问题真是浪费时间。我希望这能解决其他用户的问题。我能够使用我的自定义框架调试我的应用程序,但无法在 jenkins 上运行构建机器的版本。撤销我的分发证书并生成新的企业配置文件为我修复了构建。
这与解决方案 4 相同
P
Prabu

我尝试了上面给出的所有答案,没有任何效果。

更新到优胜美地后终于工作了


S
Saikiran Komirishetty

我遇到了同样的问题,设置正确的代码签名身份解决了这个问题(构建设置->代码签名身份)。

根据 Apple technical question“在 iOS 8 发布后创建的所有企业和标准 iOS 开发人员证书在适当的位置都有新的团队 ID 字段,以允许 Swift 语言应用程序运行”


A
Arbipher

如果您通过嵌入式二进制文件添加这三个框架,它们也将被添加到链接框架和库中。删除 Linked Frameworks and Libraries 中的三个条目将解决问题。

重新启动 Xcode 和重新启动 Mac 之类的魔术方法对我不起作用。


感谢您改进格式。它看起来更好。 “链接框架和库”是一节,而不是两节。我将“和”更改为粗体。 @Bartłomiej
特来刷分子树不丁
N
Naveen Shan

将框架添加为“嵌入式二进制”而不仅仅是“链接框架和库” - 修复了我的问题。

我还将 Embedded Content Contains Swift Code 标志设置为 YES。


A
Actively Lazy

升级到最新版本的 OS X (Yosemite)

经过数小时的反复试验,我终于解决了这个问题。 - 如果这当然适用于您的情况。

在我将 Mac OS X 从 Mavericks 升级到 Yosemite 之前,我遇到了同样的问题。 - 它解决了我的问题,希望它也能解决你的问题


E
Eldervaz Vaz

我尝试了在网上找到的所有解决方案,包括 Apple 和新证书。没有成功。

经过 6 个月的尝试,我可以运行 xcode 的唯一方法是在我的 macbook 上创建一个新帐户。


r
raphael_mav

如果您将此库添加到构建阶段的“复制文件”部分,通常此错误会消失。


这在 XCode 7.2.1 上对我有用。我在 Build Phases 面板中使用了 +,选择了 New Copy Files Phase,然后将框架从工作区树拖到 Copy Files 部分。最后我选择了目的地:框架。干净构建后,我的应用程序按预期启动。
J
Jim Rota

我的环境:Cocos2d 2.0、Box2d、Objective C

除了上面的其他答案之外,我最后去了 General 选项卡并使 WatchKit 成为 Optional。

https://i.stack.imgur.com/J2TOW.png


G
Georg

如果以上所有方法都对您没有帮助,并且您真的很沮丧...尝试所有技巧中的最佳技巧:Clean 并确保也Clean Build Folder。 :) 希望它可以帮助某人!


b
brandonscript

这些解决方案似乎都没有一直对我有用。每成功运行几次后,它就会再次失败。 “嵌入式内容包含 Swift 代码”标志对我来说始终设置为 YES。

结果我将 Xcode 设置为与 6.3 兼容。将其改回兼容 3.2 解决了它:

https://i.stack.imgur.com/1hGxh.png


谢谢!我尝试了其他一切。我把它改回了 3.2,清理了项目,重新启动了 Xcode 并且它工作了
L
Lord Zsolt

我也遇到过这个问题,只是没有找到 libswiftXCTest.dylib

解决方案是将 XCTest.framework 添加到 Build Phases/Link Binary with Library 中的 Tests 目标。即使在尝试构建主要目标时,我也收到此错误。


V
Vilém Kurz

当我使用 Swift 语言向旧项目添加新的 Today 扩展目标时,这种情况就出现了。通过将项目更新为推荐设置轻松修复。 Xcode 6.0.1


p
patrik

我使用 Mavericks,Xcode 6.1.1,在带有 iOS 8.1.1 的 iPhone5 上测试时遇到了同样的问题。我尝试了所有可能的解决方案,包括新证书和配置文件,但没有任何帮助。我在项目级别和目标级别对 Embedded Content Contains Swift CodeRunpath Search Paths 进行了更改。

我现在已经安装了 Yosemite,没有任何进一步的更改,它就开始工作了。


r
rob5408

同样的问题,对我来说,是 Crashlytics/Fabric/Beta/Twitter/Whatever-they-call-themselves 上传了一个缺少嵌入式框架的二进制文件。如果我制作了一个存档,然后以标准方式导出了 Enterprise 版本,它们就很有魅力。


w
wcribbs

经过几个月和几个月的在这里尝试一切......精神错乱的定义......在新的Mac用户下启动Xcode为我解决了这个问题。

我删除了 ~/Library/Developer/* 并重新安装了 Xcode- 所以不知道还有什么格式可以使它工作。