Undefined symbols for architecture arm64: "_OBJC_CLASS_$_Twitter", - ios

Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_Twitter", referenced from:
objc-class-ref in FirebaseTwitterAuthUI(FUITwitterAuth.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I am having that error when I want to build the project.
Any idea how to fix this?

Error Explanation :
The error suggests that the compiler could not able to find the Twitter class while building the FirebaseTwitterAuthUI for arm64 architecture. It is because of Architecture settings.
Check the Build Active Architectures Only setting from the Build Settings. Make sure that this should be same for your application target and for the cocoapods target.
If you still face the issue, post the screenshot of your Xcode with build setting.
Target -> Build Settngs -> Build Active Architecture Only.
Build Active Architecture flag => Yes indicates that build the current app only for the selected simulator architecture. It will make build faster.
Build Active Architecture flag => No indicates that build the current app for all the architectures.
So if you have multiple targets with different options, you will be able to get this kind of error.
Build Active Architecture flag => Yes for Debug and => No for Release mode.
check this :_OBJC_CLASS_$_FIRPhoneAuthProvider", referenced from: objc-class-ref in LoginVC.o Getting this error

Check that the framework you are importing has that architecture defined:
In terminal run:
lipo -info
The output should be something like:arm64 armv7 armv7s
If not,
1. your library is wrong and is missing that architecture
2. Your build settings doesn’t include that architecture
3. You are not linking the library correctly

Related

Error: Undefined symbols for architecture arm64

I use this pod to show ads in the app: https://cocoapods.org/pods/AdColony
I completed the SDK implementation with no errors.
But I'm getting this error when I try to run the app on the device: (iPhone)
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_SKAdImpression", referenced from:
objc-class-ref in AdColony(ADCAdSession.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Using new build system
note: Building targets in parallel
note: Planning build
note: Constructing build description
What I tried:
In build settings, set ARCHS = armv7 armv7s and VALID_ARCHS = armv6 armv7 armv7s arm64.
In build settings, added $(inherited) to Other Linker Flags.
In build settings, set Build Active Architecture Only to YES.
Downloaded the pod added to the project manually.
Checked the minimum deploy target version of the SDK. That fits with the project.
Unchecked Parallelize Build in Product > Scheme > Edit Scheme
How can I solve this problem?

Xcode 8.1 Undefined symbols for architecture x86_64 Error

Undefined symbols for architecture x86_64:
"_BROADCAST_MODE_IBEACON", referenced from:
-[MainViewController tableView:cellForRowAtIndexPath:] in MainViewController.o
"_OBJC_CLASS_$_TZBeaconSDK", referenced from:
objc-class-ref in MainViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I take that error when I want to use simulator. There is no problem when I build it on iPhone. There is only problem when I use simulator. I have tried to change Architectures from Build settings, error text changes as i386 but problem is same.
I use that sdk; TZBeacon
Is there any problem with sdk? Could you help me to solve that problem?
Your library does not support simulator. Run this command line to see which architecture that it supports:
lipo -info libTZBeaconSDK.a
the result is: Architectures in the fat file: libTZBeaconSDK.a are: armv7 arm64
So, you have to test in a device, not in simulator!
Typically you get that error in the simulator if the architecture of the framework is built for the device. You need to use a version of the framework that is built for the simulator to run it on the simulator. This is something that should be provided by the framework vendor.
If they don't provide one then look into only including that framework when building to the device and not to the simulator. There is another SO answer here to point you in the right direction: How to only include a framework when building for device, not iOS Simulator?
Simple trick here: Go -> Go To Folder "/Library/Developer/Xcode"
delete Derived data next clean your project then Run .

Linker command failed with exit code 1; undefined symbols for architecture armv7s.

This is a first time I've been trying to upload binary (new version of an iOS App, not a completely new app) to the iTunes store. When I attempt to create an archive, I receive three Apple Mach-o linker errors, which show up red in issue navigator.
This is what shows up:
ld: warning: ignoring file /Users/alinam/Library/Developer/Xcode/DerivedData/Latina_1-bklvousdwnrhhgenrxpftegwerkb/Build/Intermediates/ArchiveIntermediates/Latina 1/BuildProductsPath/Release-iphoneos/libCordova.a, file was built for archive which is not the architecture being linked (armv7s): /Users/alinam/Library/Developer/Xcode/DerivedData/Latina_1-bklvousdwnrhhgenrxpftegwerkb/Build/Intermediates/ArchiveIntermediates/Latina 1/BuildProductsPath/Release-iphoneos/libCordova.a
Undefined symbols for architecture armv7s:
"_OBJC_METACLASS_$_CDVViewController", referenced from:
_OBJC_METACLASS_$_MainViewController in MainViewController.o
"_OBJC_CLASS_$_CDVViewController", referenced from:
_OBJC_CLASS_$_MainViewController in MainViewController.o`
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)`
In one of the existing discussions I read that it might have something to do with linking binary with libraries.
Well, under Build Phases -> Link Binary With Libraries the libCordova.a shows up red (missing?).
If so, how and where do I get it and what do I do with it then?
Update:
I resolved the issue of not being able to archive the app by removing armv7s and arm64 (and leaving only armv7) in the app's Build Settings -> Architectures -> Valid Architectures.
Now it looks like this.
I've left everything as it was under CordovaLib.xcodeproj -> Build Settings -> Architectures, which looks like this.
So I have a new question: can I really simply remove armv7s and arm64 from Valid Architectures without any consequences? Will the app run on all the devices it should? In all the related discussions I've read through I couldn't find a definite answer to this.

Build Static Library in Xcode 4.6 for Simulator

How to build a static library for simulator on Xcode 4.6?
I've tried "https://github.com/kstenerud/iOS-Universal-Framework". But got an error while using that framework on demo.
Error is like:
ld: warning: ignoring file /Users/shuvo/test_lib/Demo(V.1)/myProject.lib/libMyProjectLibrary.a, missing required architecture i386 in file /Users/shuvo/test_lib/Demo(V.1)/myProject.lib/libMyProjectLibrary.a (2 slices)
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_showScreen", referenced from:
objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I came across the same problem,and solve it by setting the static lib's run configuration as Release in the scheme editor.
here is the words in the document of iOS-Universal-Framework, section "Building your iOS Framework":
step 2.(optional) Set the "Run" configuration in the scheme editor.
It's set to Debug by default but you'll probably want to change it to
"Release" when you're ready to distribute your framework.
the key is the "Build Active Architecture Only" in Build Settings,
Debug is set to NO by default

error when including my static library in an iOS project

I'm trying to include a static library in an iOS project.
I imported the .a file and every .h related but then I'm getting this error :
ld: warning: ignoring file /Users/alexis/Library/Developer/Xcode/DerivedData/PlazappPartnerWorkspace- cdrmloavlcqouugawmtqywiinqne/Build/Products/Debug-iphoneos/libPlazappPartnerLib.a, file was built for archive which is not the architecture being linked (i386)
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_LauncherViewController", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
I guess there's a problem of architecture type but I don't understand why nor how to solve it.
Can someone explain it to me and tell me how to solve it? Thanks!
It seems your library was built to run in the device (arm architecture) and you try to use it in the simulator (i386 architecture). Check your library build settings. They should match with your project build settings.
Or even better, create a fat library for development purposes. lipo command is your friend.
To verify the current architectures present in your library: (in Terminal)
cd <path to library folder> # in you case: /Users/alexis/Library/Developer/Xcode/DerivedData/PlazappPartnerWorkspace- cdrmloavlcqouugawmtqywiinqne/Build/Products/Debug-iphoneos
lipo -info libPlazappPartnerLib.a
The output should look like:
Architectures in the fat file: libPlazappPartnerLib.a are: armv6 armv7
They should match with the target device or simulator you are building for.

Resources