在将Swift类添加到旧的Xcode项目后,我得到这个错误。

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

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


当前回答

在更新到Xcode 10.2 (Swift 5)后遇到了这个问题。找到下面的苹果链接,显示了两个选项: https://support.apple.com/kb/DL1998?locale=en_US

对我来说,我把MacOS更新到10.14.4 (OS中包含Swift库)。否则,“下载Swift 5运行时支持命令行工具”的旧操作系统。

其他回答

最近又开始得到这个错误。虽然前两个答案在过去为我解决了这个问题,但这次没有一个建议的答案有效。我注意到错误说:

 Reason: no suitable image found.  Did find:
/private/var/mobile/Containers/Bundle/Application/8D8E5347-940A-4724-ACFE-33DF4C4DCB37/your.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/mobile/Containers/Bundle/Application/8D8E5347-940A-4724-ACFE-33DF4C4DCB37/your.app/Frameworks/libswiftCore.dylib'

所以我试着从设备上删除应用程序,然后我就可以重新构建并运行了。

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

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

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

我在这个问题上研究了很久。有几个原因导致这个问题。

如果你在objective - C项目中使用Swift代码/库,你应该尝试解决方案1-2-3

如果你正面临这个问题,一个新的Swift项目解决方案4将最适合你。

解决方案1:

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

解决方案2:

转到项目构建设置,并设置始终嵌入Swift标准库(以前的嵌入式内容包含Swift代码)标志为YES

解决方案3:

进入项目构建设置,将@executable_path/Frameworks添加到Runpath搜索路径选项

解决方案4:

如果以上都不起作用,那么应该这样做。正如AirSign的帖子中提到的,苹果似乎是忍者补丁证书

At InHouse证书

主题:UID=269J2W3P2L, CN=iPhone分布:公司名称,O=公司名称,C=FR

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

主题:UID=269J2W3P2L, CN=iPhone分布:公司名称,OU=269J2W3P2L, O=公司名称,C=FR

因此,您应该重新创建证书和供应

在我的例子中,我试图导入一个自定义框架,并得到类似的错误。 结果我不得不在嵌入式二进制文件中导入框架,而不是在链接框架和库中。

嵌入式二进制文件在项目设置-> ->通用下

参考https://forums.developer.apple.com/thread/21292

这个解决方案对我很有效:

It occurred on my side when building an app in the command line via xcodebuild and xcrun PackageApplication, signing the app with an enterprise profile. On our CI build servers, the certificate was set to "Always Trust" in the keychain (select certificate -> Get Info -> Trust -> "Use System Default" can be changed to "Always Trust"). I had to set it back to "Use System Default" in order to make this work. Initially we set this to "Always Trust" to work-around the keychain dialogs that appear after software updates and certificate updates.