Why do I get iOS linker errors with my static libraries?
I have a problem with linking my mixed language framework to a project.
-
I create a framework with Swift and Objective-C classes.
-
The main logic was stored in the Swift file. For example the class with a method that calls NSLog("Swift log was called").
-
Objective-C file has a class that has a method in which I create an instance of Swift class and call Swift-log method.
-
I link this framework with my Objective-C project, I can call all that I need in this project, but when I want to build this project I receive error
linker command failed with exit code 1 (use -v to see invocation)
And warnings:
ld: warning: Could not find auto-linked library 'swiftFoundation'
ld: warning: Could not find auto-linked library 'swiftDarwin'
ld: warning: Could not find auto-linked library 'swiftCoreFoundation'
ld: warning: Could not find auto-linked library 'swiftCore'
ld: warning: Could not find auto-linked library 'swiftCoreGraphics'
ld: warning: Could not find auto-linked library 'swiftObjectiveC'
ld: warning: Could not find auto-linked library 'swiftDispatch'
ld: warning: Could not find auto-linked library 'swiftSwiftOnoneSupport'
I also saw the solution with importing empty Swift-file, but it necessary to make a project without any trash.
- Open ios/YourAppName.xcodeproj in Xcode
- Right-click on Your App Name in the Project Navigator on the left, and click New File…
- Create a single empty Swift file to the project (make sure that Your App Name target is selected when adding)
- when Xcode asks, press Create Bridging Header and do not remove Swift file then. re-run your build.
This should fix the problem
In my case it was a React-Native project after adding a Swift Pods library. Maybe just the step 2 can work:
- Adding a new Swift file and a Brigde header:
1) File -> New -> File
2) Select Swift File
3) Confirm Create Bridging Header
- Go to
Build Settings
and setAlways Embed Swift Standard Libraries
toYES