2016-06-21 2 views
0

Есть похожие вопросы, но никто не отвечает на мой вопрос.Swift: ошибка: команда компоновщика не удалась с кодом выхода 1

Я использую Swift 2.0 Я работаю над проектом, который показывает долготу и широту, используя CoreLocation.

Я также использую социальные рамки для публикации в twitter и facebook.

Я получаю сообщение об ошибке «error: linker command failed with exit code 1», а затем он говорит мне «(используйте -v, чтобы увидеть вызов)», но я этого не понимаю.

Я собираюсь ответить здесь на SO, чтобы написать часть сервисов определения местоположения. вот ссылка https://stackoverflow.com/a/24696878/6140339

вот мой код:

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 

}

Целые сообщение об ошибке:

дубликат символа именоваться _main в: /Users/пользователя/Library/Developer/Xcode /DerivedData/FarOut-ekrxzlgzfahpruavmlhyhiwiynum/Build/Intermediates/FarOut.build/Debug-iphonesimulator/FarOut.build/Objects-normal/x86_64/AppDelegate.o /Пользователи/пользователь/Библиотека/Разработчик/Xcode/DerivedData/F arOut-ekrxzlgzfahpruavmlhyhiwiynum/Build/Intermediates/FarOut.build/Debug-iphonesimulator/FarOut.build/Objects-normal/x86_64/FirstViewController.o ld: 1 дубликат символа для архитектуры x86_64 clang: ошибка: команда компоновщика не удалась с кодом выхода 1 (используйте -v, чтобы увидеть вызов)

+0

Вы можете увидеть вывод компоновщика, если вы выберите последний значок в навигаторе проекта (речевой пузырь), а затем расширьте свой журнал «сборки». Найдите ошибку красных ссылок и нажмите, чтобы развернуть этот текст; он должен показать, почему компоновщик не смог завершить – Paulw11

ответ

1

Ваш код хорошо работает в моем Xcode. Я думаю, что после удаления Derived данных очистка и перестройка будут работать нормально. Еще одна вещь, вам нужно разделить код AppDelegate и ViewController, потому что у них есть свои собственные роли.

+0

Я очищал, перестраивал и не работал. Я перезапустил xCode, не работал. Вы только что скопировали пасту? Я не уверен, что не работает. Из того, что я могу сказать, это не имеет никакого отношения к моему социальному коду, это связано с моим кодом местоположения, я скопировал и вложил его в новый проект и по-прежнему получал ту же ошибку – GabrielMSC

+0

@GabrielMSC Я создал новый проект приложения Single View , а затем удалили два файла (AppDelegate.swift, ViewController.swift). затем создайте FirstViewController.swift и скопируйте вставку. Не удалось ли скопировать всю ошибку? Дополнительная информация приведена выше комментария ошибки. – Paul

+0

Отредактированный вопрос, чтобы включить полное сообщение об ошибке – GabrielMSC

0

Так много разных проблем, для того же сообщения об ошибке. (Linker command failed with exit code 1)

1), если у вас два same constants в разных классах, то и эта проблема возникает.

2) если вы случайно импортировали .m file вместо .h file в файле реализации.

3) Эта ошибка также может возникнуть, если вы импортировали две разные версии одной и той же библиотеки, в этом случае просто удалите старую версию и сохраните только одну версию.

4) Добавление в "other linker flags" в "Project", а не в "Targets". Итак, вы переместите его на «Targets», его не должно быть в «Project».

5) Проверьте это в project-> target-> построить Настройки-> поиск РАЗРЕШЕНИЕ bitcode-> набор NO в DEBUG

проверить эту .. если это нормально, то один раз сделать, как следующее ,

Меню> Product> Clean ... Затем запустите проект

Надеется, что это поможет вам .. :)

Смежные вопросы