[objective-c] 아키텍처 i386에 대한 기호를 찾을 수 없습니다.

Xcode로 컴파일하려고 할 때 다음 오류가 발생합니다.

  **Ld /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher normal i386
    cd /Users/doronkatz/Sites/xCode/iKosher
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    setenv PATH "/Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Xcode4/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Xcode4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Xcode4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk -L/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -L/Users/doronkatz/Sites/xCode/iKosher -F/Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator -filelist /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Intermediates/iKosher.build/Debug-iphonesimulator/iKosher.build/Objects-normal/i386/iKosher.LinkFileList -mmacosx-version-min=10.6 -all_load -ObjC -Xlinker -objc_abi_version -Xlinker 2 -lz -framework Security -framework CFNetwork -framework CoreData -framework Foundation -framework UIKit -framework CoreGraphics -framework QuartzCore -o /Users/doronkatz/Library/Developer/Xcode/DerivedData/iKosher-bphnihrngmqtkqfgievrrumzmyce/Build/Products/Debug-iphonesimulator/iKosher.app/iKosher

Undefined symbols for architecture i386:
  "_UTTypeCreatePreferredIdentifierForTag", referenced from:
      +[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
  "_UTTypeCopyPreferredTagWithClass", referenced from:
      +[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
  "_kUTTagClassMIMEType", referenced from:
      +[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
  "_kUTTagClassFilenameExtension", referenced from:
      +[ASIHTTPRequest mimeTypeForFileAtPath:] in ASIHTTPRequest.o
  "_SCNetworkReachabilitySetCallback", referenced from:
      -[Reachability startNotifier] in Reachability.o
  "_SCNetworkReachabilityScheduleWithRunLoop", referenced from:
      -[Reachability startNotifier] in Reachability.o
  "_SCNetworkReachabilityUnscheduleFromRunLoop", referenced from:
      -[Reachability stopNotifier] in Reachability.o
  "_SCNetworkReachabilityCreateWithName", referenced from:
      +[Reachability reachabilityWithHostName:] in Reachability.o
  "_SCNetworkReachabilityCreateWithAddress", referenced from:
      +[Reachability reachabilityWithAddress:] in Reachability.o
  "_SCNetworkReachabilityGetFlags", referenced from:
      -[Reachability currentReachabilityStatus] in Reachability.o
      -[Reachability isReachable] in Reachability.o
      -[Reachability isConnectionRequired] in Reachability.o
      -[Reachability isConnectionOnDemand] in Reachability.o
      -[Reachability isInterventionRequired] in Reachability.o
      -[Reachability isReachableViaWWAN] in Reachability.o
      -[Reachability isReachableViaWiFi] in Reachability.o
      ...
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status**

무슨 뜻인지 잘 모르겠습니다.



답변

ASIHTTPRequest를 사용하고 있으므로 프로젝트를 설정해야합니다. 여기에서 두 번째 부분을 읽으십시오.

https://allseeing-i.com/ASIHTTPRequest/Setup-instructions


답변

이런 종류의 것이 갑자기 나타나면 일반적으로 프로젝트에 필요한 프레임 워크가 누락되었음을 의미합니다. 라이브러리 및 종속 프로젝트에는 프레임 워크가 필요할 수 있으므로 최근에 프레임 워크를 추가 한 경우이 오류가 발생할 수 있습니다.

프레임 워크를 추가하려면 프로젝트보기에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고을 선택한 Add다음 Existing frameworks...목록에서 선택 합니다. 그런 다음 누락 된 기호가있는 프레임 워크를 찾으십시오.

필요한 프레임 워크를 찾는 방법에 관해서는 Xcode 도움말 검색도 사용할 수 있지만 Google을 사용하는 것이 가장 쉽습니다. 기호 중 하나를 검색하고 얽 히지 않은 이름 (예 :)을 찾기 위해 최선을 다한 SCNetworkReachabilityGetFlags다음 developer.apple.com에서 찾은 첫 번째 문서 링크가 적합한 경우가 많습니다. 일반적으로 멀리 사냥 할 필요는 없습니다. 이 경우 다음 페이지입니다.

https://developer.apple.com/documentation/systemconfiguration/scnetworkreachability-g7d

그런 다음 페이지 상단 SystemConfiguration에서이 경우 사용할 프레임 워크를 알려줍니다 . 그래서 그것을 프로젝트에 추가하고 다시 컴파일하십시오.

그런 다음 작동 할 때까지 계속하십시오 …

편집 : 나는 시뮬레이터를 사용한 적이 없지만 이것은 장치에서하는 일입니다. 동일하다고 가정합니다 …


답변

때때로 타겟에서 누락 된 소스 파일이 있습니다.

  1. 누락 된 기호 조사
  2. 타겟-> 빌드 단계-> 컴파일 소스
  3. 목록에없는 경우 누락 된 소스 파일 추가
  4. 행복을 위해 command + b

“누락 된”것으로 보이는 파일을 선택하고 빌드중인 대상에 대한 확인란이 선택되어 있는지 오른쪽 유틸리티 표시 줄에서 확인할 수 있습니다.


답변

다음 방법을 사용하여 해결했습니다 (XCode 4의 경우).

1) 프로젝트 탐색 창에서 프로젝트를 선택하면 오른쪽에 프로젝트 요약이 표시됩니다.

2) 4 번째 탭 빌드 단계 선택

3) 라이브러리 옵션과 바이너리 링크 선택

4) 받고있는 프레임 워크 추가

5) 프레임 워크를 기본 폴더에서 프레임 워크 폴더로 이동합니다.

6) 다시 빌드하면 오류가 사라집니다.


답변

문제는 추가 된 파일에 대한 대상 멤버십이 앱 대상에 누락되어 있다는 것이므로 파일을 선택하고 대상 멤버십 상자에 체크 표시를 추가하십시오.

예를 들어 common.m의 메서드 정의에 오류가 표시되는 경우여기에 이미지 설명 입력


답변

동일한 오류에 몇 시간을 보낸 후 이에 대한 솔루션을 추가하려고 생각했습니다.

위의 사람들은 가장 먼저 확인해야 할 프레임 워크 추가를 놓쳤는 지 여부입니다. 위의 Pruthvid에서 제공하는 단계를 참조하십시오.

내 문제는 내가 그것을 삭제 한 후 누락 된 컴파일 클래스였으며 나중에 다시 추가했습니다.

보고 된 오류 클래스에 대해 표시된대로 “컴파일 소스”를 확인하십시오. 작성한 누락 된 클래스를 추가하십시오.


답변

누락 된 프레임 워크를 추가하는 것이 아니라면 실제로 “타겟 / 빌드 단계 / 바이너리와 라이브러리 연결”에 나열되어 있는지 확인 합니다. 앞에서 언급했듯이 일반적으로 프레임 워크가 누락되었음을 나타냅니다.

내 프로젝트에는 두 개의 동일한 프레임 워크가 나열되어 있는데, 그중 하나를 제거했을 때이 오류가 발생했습니다. “Link Binary With Libraries”목록에서도 제거 되었기 때문입니다. 다시 추가했고 문제가 사라졌습니다 (아직 두 개의 프레임 워크가 나열되어 있습니다).