Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

xcode

ios

swift

I've built a Swift framework and now I'm trying to start building a Swift iOS application that will use that framework. I'm getting this error:

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

I've scoured SO and found similar reports and tried the fixes listed there, including:

  • Clearing out my DerivedData folder
  • Restarting Xcode and the iPhone simulator
  • Ensuring that Always Embed Swift Standard Libraries = YES is set, both in my framework and my application's build settings
  • Ensuring that Enable Bitcode=NO is set, both in my framework and my application's build settings
  • Ensuring that Runpath Search Paths is set to @executable_path/Frameworks, both in my framework and my application's build settings
  • Copied all the libswift files from my Xcode installation into a local copy within my project, and added a custom build phase to copy those files into the frameworks folder.

In every case, I get the same error when I try to run my application.

  • Xcode Version 8.1 (8B62)
  • Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1)
like image 410
Tim Dean Avatar asked Dec 06 '16 00:12

Tim Dean


3 Answers

I eventually got this working using a mix of fixes. I'm not sure if all of them are needed, but I'm documenting what seemed to work for me here, just in case anyone else can benefit by what I've found.

  1. I have set Always Embed Swift Standard Libraries to a value of YES in the build settings tab for both my Swift framework and in the Swift application that uses the framework.
  2. I have added Foundation.framework to the Linked Frameworks and Libraries section of the general tab for both my Swift framework and in the Swift application that uses the framework.
  3. I have added Foundation.framework to the Embedded Binaries section of the general tab for the Swift application that uses the framework.

With all 3 of these settings in place, I am able to build and run my application without encountering this error.

like image 148
Tim Dean Avatar answered Dec 15 '22 16:12

Tim Dean


This might not be the case for everyone, but I solved it by actually writing some code in the main target.

I had an empty project consisting of a framework and a test target, and when running tests I was getting this error. Apparently Swift is pretty smart to detect that you don't actually need this library and does not link to libswiftSwiftOnoneSupport.dylib.

The fix is just to add some code, I just added:

class Test {
    func a() { print ("something") }
}

and libswiftSwiftOnoneSupport.dylib got linked.

like image 42
S2dent Avatar answered Dec 15 '22 16:12

S2dent


After several days of being stuck with this issue I finally found something that worked for me; hopefully this will help others too.

Turns out that specifically using print() anywhere in the code will somehow force libswiftSwiftOnoneSupport.dylib to be loaded and the issue will go away.

I'm using Xcode 10.1, Swift 4.2 and the pod that was giving me this issue was Nimble.

BTW, I am aware of @S2dent's suggestion to "just add some code" but in my case my framework already had several different classes so it didn't help me.

like image 36
LuisCien Avatar answered Dec 15 '22 16:12

LuisCien