Reputation: 659
There are similar questions, but none that answer my question.
I am using Swift 2.0 I am working on a project that shows longitude and latitude using CoreLocation.
I also am using the Social framework to post to twitter and facebook.
I am getting an error that says "error: linker command failed with exit code 1 " and then it tells me "(use -v to see invocation)" but I do not understand that.
I am going off an answer here on SO to write the location services portion. here is the link https://stackoverflow.com/a/24696878/6140339
here is my code:
import UIKit
import Social
import CoreLocation
@UIApplicationMain
class FirstViewController: UIViewController, CLLocationManagerDelegate, UIApplicationDelegate {
var window: UIWindow?
var locationManager: CLLocationManager!
var seenError : Bool = false
var locationFixAchieved: Bool = false
var locationStatus : NSString = "Not Started"
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
initLocationManager();
return true
}
func initLocationManager() {
seenError = false
locationFixAchieved = false
locationManager = CLLocationManager()
locationManager.delegate = self
CLLocationManager.locationServicesEnabled()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
}
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
locationManager.stopUpdatingLocation()
if (error == true) {
if (seenError == false) {
seenError = true
print(error)
}
}
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if (locationFixAchieved == false) {
locationFixAchieved = true
let locationArray = locations as NSArray
let locationObj = locationArray.lastObject as! CLLocation
let coord = locationObj.coordinate
print(coord.latitude)
print(coord.longitude)
}
}
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
var shouldIAllow = false
switch status {
case CLAuthorizationStatus.Restricted:
locationStatus = "Restricted Access to location"
case CLAuthorizationStatus.Denied:
locationStatus = "User denied access to location"
case CLAuthorizationStatus.NotDetermined:
locationStatus = "Status not determined"
default:
locationStatus = "Allowed to location Access"
shouldIAllow = true
}
NSNotificationCenter.defaultCenter().postNotificationName("LabelHasBeenUpdated", object: nil)
if (shouldIAllow == true) {
NSLog("Location to Allowed")
//Start location services
locationManager.startUpdatingLocation()
} else {
NSLog("Denied access: \(locationStatus)")
}
}
@IBAction func postToFacebookButton(sender: UIButton) {
if(SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook)){
let socialController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
//creates post with pre-desired text
socialController.setInitialText("")
self.presentViewController(socialController, animated: true, completion: nil)
}
}
@IBAction func postTweetButton(sender: UIButton) {
if(SLComposeViewController.isAvailableForServiceType(SLServiceTypeTwitter)){
let socialController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
//creates post with pre-desired text
socialController.setInitialText("")
self.presentViewController(socialController, animated: true, completion: nil)
}
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//layer.cornerRadius layer.cornerRadius
}
Entire error message:
duplicate symbol _main in: /Users/user/Library/Developer/Xcode/DerivedData/FarOut-ekrxzlgzfahpruavmlhyhiwiynum/Build/Intermediates/FarOut.build/Debug-iphonesimulator/FarOut.build/Objects-normal/x86_64/AppDelegate.o /Users/user/Library/Developer/Xcode/DerivedData/FarOut-ekrxzlgzfahpruavmlhyhiwiynum/Build/Intermediates/FarOut.build/Debug-iphonesimulator/FarOut.build/Objects-normal/x86_64/FirstViewController.o ld: 1 duplicate symbol for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
Upvotes: 0
Views: 1378
Reputation: 1970
So many different problems for the same error message.(Linker command failed with exit code 1
)
1) if you had two same constants
in different classes then also this issue happens.
2) if you have accidently imported a .m file
instead of .h file
in an implementation file.
3) This error can also be occurred if you have imported two different versions of same library ,in this case just remove the older version and keep only one version.
4) Adding the "other linker flags
" in "Project
" and not in "Targets
". So, you move it to "Targets
", it shouldn't be in "Project
".
5) Check it out in project->target->build settings-> search enable bitcode->set NO in DEBUG
check out this .. if it's OK then once do like following.
Menu > Product > Clean ... then Run the project
Hope it helps you.. :)
Upvotes: 0
Reputation: 789
Your code works well in my Xcode. I think after deleting Derived data, cleaning and rebuilding will works fine. One more thing, you need to split code of AppDelegate and ViewController cause they have their own roles.
Upvotes: 1