2016-06-21 2 views
0

비슷한 질문이 있지만 내 질문에 대한 대답은 없습니다.Swift : 오류 : 종료 코드 1로 인해 링커 명령이 실패했습니다.

저는 Swift 2.0을 사용하고 있습니다. CoreLocation을 사용하여 경도와 위도를 보여주는 프로젝트를 진행하고 있습니다.

나는 또한 사회 프레임 워크를 사용하여 트위터와 페이스 북에 게시하고 있습니다.

"오류 : 링커 명령이 종료 코드 1과 함께 실패했습니다"라는 오류가 발생하고 "(호출을 보려면 -v 사용)"이라고 알려주지 만 이해가되지 않습니다.

위치 서비스 부분을 작성하려면 여기에서 답변을 참조하겠습니다. 여기 링크 여기 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 중복 기호 : /사용자/사용자/라이브러리/개발자/엑스 코드 /DerivedData/FarOut-ekrxzlgzfahpruavmlhyhiwiynum/Build/Intermediates/FarOut.build/Debug-iphonesimulator/FarOut.build/Objects-normal/x86_64/AppDelegate.o /사용자/사용자/라이브러리/개발자/Xcode/DerivedData/F 아키텍처/x86/64/FirstViewController.o ld : 1 중복 심볼 x86_64 clang : 오류 : 링커 명령이 종료 코드 1을 사용하여 실패했습니다. (호출을 보려면 -v를 사용하십시오.)

+0

당신은 링커 출력을 볼 수 있습니다 ..

가 당신을 도움이되기를 바랍니다 프로젝트를 실행 연설 거품)을 선택한 다음 "빌드"로그를 확장하십시오. 빨간색 링커 오류를 찾아 클릭하여 해당 텍스트를 확장하십시오. 링커가 왜 완료하지 못했는지 보여 주어야합니다. – Paulw11

답변

1

내 Xcode에서 코드가 잘 작동합니다. 파생 된 데이터를 삭제 한 후에는 정리 및 재구성이 올바르게 작동합니다. 한 가지 더, 당신은 AppDelegate와 ViewController의 코드를 분할해야한다. 당신이 있다면 같은 오류 메시지

+0

나는 청소하고, 다시 만들고, 작동하지 않았습니다. xCode를 다시 시작하고 작동하지 않았습니다. 붙여 넣기를 그냥 복사 했습니까? 나는 일하지 않는 것이 확실하지 않다. 내가 내 소셜 코드와 아무 관련이 없다고 말할 수있는 것부터, 내 위치 코드와 관련이 있습니다. 복사하여 새 프로젝트에 붙여 넣은 후에도 여전히 동일한 오류가 발생했습니다. – GabrielMSC

+0

@GabrielMSC 단일보기 응용 프로그램의 새 프로젝트를 만들었습니다. . 그런 다음 두 개의 파일 (AppDelegate.swift, ViewController.swift)을 삭제했습니다. 그런 다음 FirstViewController.swift를 만들고 붙여 넣기를 복사합니다. 표시된 전체 오류를 붙여 넣을 수 있습니까? 오류 설명 위에 추가 정보가 있습니다. – Paul

+0

전체 오류 메시지를 포함하도록 편집 된 질문 – GabrielMSC

0

그래서 많은 다른 문제. (Linker command failed with exit code 1)

1)는 다른 클래스의 두 same constants는 또한이 문제가 발생합니다. 당신이 실수로 .m file 대신 .h file 구현 파일에서 가져온 경우

2). 그냥 이전 버전을 제거하고 하나의 버전 만 계속이 경우, 같은 라이브러리의 서로 다른 두 가지 버전을 가져온 경우

3)이 오류가 발생 할 수 있습니다. 은 "Project"에서 "other linker flags"가 아니라 "Targets"에 추가

4). 따라서 'Targets'으로 이동하면 'Project'이 아니어야합니다.

5) 것은 bitcode-> DEBUG에서 NO가 OK 인 경우이 .. 다음 번 다음과 같이 할

체크 아웃 설정되지 에이블 프로젝트 -> target-> 설정 -> 검색을 구축 에 체크 아웃 .

메뉴> 제품> 청소 ... 다음 (프로젝트 네비게이터의 마지막 아이콘을 선택하면 :)

관련 문제