我已经构建了一个Swift框架,现在我正在尝试开始构建一个将使用该框架的Swift iOS应用程序。我收到此错误:
dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib
Referenced from: /Users/tdean/Library/Developer/Xcode/DerivedData/NFLApplication-ejmafvjrlqgjaabggwvadjarjjlg/Build/Products/Debug-iphonesimulator/NFLStatsModel.framework/NFLStatsModel
Reason: image not found
我已经搜索了SO并找到了类似的报告并尝试了其中列出的修复程序,包括:
Always Embed Swift Standard Libraries = YES
Enable Bitcode=NO
Runpath Search Paths
设置为@executable_path/Frameworks
在每种情况下,当我尝试运行我的应用程序时都会遇到相同的错误。
答案 0 :(得分:42)
我最终使用各种修复工具。我不确定是否所有这些都是必需的,但我在这里记录似乎对我有用的东西,以防万一其他人可以从我发现的东西中受益。
Always Embed Swift Standard Libraries
设置为值YES
。Foundation.framework
添加到我的Swift框架和使用该框架的Swift应用程序的常规选项卡的Linked Frameworks and Libraries部分。Foundation.framework
添加到使用该框架的Swift应用程序的常规选项卡的“嵌入式二进制文件”部分。有了所有这三个设置,我就可以构建并运行我的应用程序而不会遇到此错误。
答案 1 :(得分:23)
可能并非每个人都这样,但是我通过在主要目标中实际编写一些代码来解决了这个问题。
我有一个由框架和测试目标组成的空项目,并且在运行测试时遇到此错误。显然,Swift非常聪明,可以检测到您实际上不需要此库,并且不会链接到AnniversaryBusinessLogic
。
解决方法是添加一些代码,我刚刚添加了
context-div
和* {
box-sizing:border-box;
}
#main-container {
width: 800px;
padding: 20px;
margin: 20px;
border: 2px solid green;
}
#contexts-container {
padding: 20px;
margin: 20px;
border: 2px solid red;
overflow: auto;
display: flex;
}
#contexts-container>div {
padding: 20px;
min-width: 500px; /* can be what you want */
height: 400px; /* can be what you want */
overflow: auto;
}
已链接。
答案 2 :(得分:11)
在坚持了几天之后,我终于找到了对我有用的东西。希望这也会对其他人有所帮助。
结果证明,专门在代码中的任何地方使用print()
将以某种方式强制libswiftSwiftOnoneSupport.dylib加载,问题将消失。
我正在使用Xcode 10.1,Swift 4.2,而给我带来此问题的pod是Nimble。
顺便说一句,我知道@S2dent的建议“只是添加一些代码”,但就我而言,我的框架已经有几个不同的类,因此它没有帮助我。
答案 3 :(得分:9)
您是如何安装依赖项的?
我遇到了类似的问题:
dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib
Referenced from: <internal framework>
Reason: image not found
事实证明这与Swift整体模块优化有关。
使用Carthage作为依赖管理器,它们被编译为Release,因此使用整个模块优化进行编译,Xcode建议我打开它。在模拟器上运行应用程序将其编译为Debug。我猜测动态框架不能与运行它的应用程序处于不同的优化级别。
解决方案是明确指定我希望Carthage构建的配置。 (carthage bootstrap --configuration Debug
)哦,然后清理我的构建文件夹。
答案 4 :(得分:2)
我遇到了同样的问题,将库(我自己的一个构建库)添加到应用程序的Linked Frameworks and Libraries
标签中的General
中。
答案 5 :(得分:0)
如果您不想将Foundation.framework添加到链接框架或嵌入式二进制文件中,也可以向测试目标提供主机应用程序
答案 6 :(得分:0)
您可以通过在目标的“构建设置”中将“始终嵌入Swift标准库”设置为“是”来解决此问题。
答案 7 :(得分:0)
$ py test_outlook.py
2019-12-06 10:00:00+00:00 test apointment
代表@rpath
-Runpath Search Path
。
这是一个动态链接器错误,它在负载或运行时dyld: Library not loaded: @rpath Reason: image not found
中链接二进制文件默认情况下,LD_RUNPATH_SEARCH_PATH
指向@rpath
@executable_path/Frameworks
-允许您为应用程序相对指定框架位置。