programing

빌드 실패 : ld : 중복 기호 _OBJC_CLASS _ $ _ Algebra5FirstViewController

nasanasas 2020. 10. 28. 08:08
반응형

빌드 실패 : ld : 중복 기호 _OBJC_CLASS _ $ _ Algebra5FirstViewController


iPhone 시뮬레이터를 통해 앱을 실행할 때 갑자기이 오류가 발생합니다.

clang : 오류 : 링커 명령이 종료 코드 1로 실패했습니다 (호출을 보려면 -v 사용) :

ld : 중복 기호 _OBJC_CLASS _ $ _ Algebra5FirstViewController in ... / Algebra5-anwcuftojtxtgkfootneeeqhwztj / Build / Intermediates / Algebra5.build / Debug-iphonesimulator / Algebra5.build / Objects-normal / i386 / ExercisesViewController.ohwztxtgfootneeController.ohw ... / Algebra5-anwcuft 아키텍처 i386 용 Build / Intermediates / Algebra5.build / Debug-iphonesimulator / PSLE ​​Algebra5.build/Objects-normal/i386/PSLE_Algebra5FirstViewController.o

그게 다 무엇입니까?


Algebra5FirstViewController 클래스가 여러 번 컴파일 된 것처럼 보입니다.

.m 및 .mm이 Xcode의 프로젝트 소스에 한 번만 포함되도록 할 수 있습니까? 컴파일 로그 (중단 점 아이콘 옆에있는 오른쪽의 마지막 아이콘)를 확인하여이를 확인하고 한 번만 컴파일되었는지 확인할 수도 있습니다.

또한이 클래스가 링크하는 라이브러리의 일부이고 동일한 이름의 클래스가있는 경우 동일한 오류가 발생할 수 있습니다.

마지막으로, 이전 개체 파일이 여전히 존재하고 컴파일 된 파일에 약간의 쓰레기가있는 경우를 대비하여 정리하고 다시 빌드 할 수 있습니다. 혹시라도 ...

편집하다

또한 두 번째 참조는 ExercisesViewController에 대한 파일에서 만들어졌습니다. 이 파일에 뭔가가있을 수 있습니다. .h 대신 Algebra5FirstViewController 파일을 #import했거나 ExercisesViewController에 @implementation (ExercisesViewController) 대신 @implementation (Algebra5FirstViewController)이 있거나이 파일에 Clean an Rebuild로 정리할 정크가있었습니다.


동일한 .m 파일이 "빌드 단계"의 대상 "컴파일 소스"섹션에서 여러 번 참조되는 경우 발생할 수 있습니다. 중복 항목을 제거하면 괜찮습니다.


또한 const * NSString구현 파일 (올바르게) 대신 헤더 파일에서 (잘못) 선언하여이 문제가 발생했습니다.


실수로 .h 대신 .m을 가져 왔기 때문에이 문제가 발생했습니다. 이것을 읽으면 같은 문제를 가진 사람이 얼마 동안 절약되기를 바랍니다.


나는 같은 문제가 있었다. 해결되었습니다!

프로젝트로 파일을 가져온 경우 .m (메인) 파일이 Targets (Project Name)-> Build Phases-> Compile Sources에 있는지 확인합니다.

파일이없는 경우 표시된 [+) 추가 버튼을 사용하여 포함합니다. 또한 중복 파일이있는 경우 (있는 경우) 삭제하십시오.

이제 cmd + shift + k를 눌러 프로젝트를 정리하십시오. 새 빌드는이 오류를 표시하지 않아야합니다.

여기에 이미지 설명 입력


@paiego가 설명한 것처럼 다른 프로젝트에서 파일을 추가 할 때 비슷한 오류가 발생했습니다. 내 오류는 " 대상에 추가 "를 선택하지 않았다는 것 입니다. 위에서 설명한대로 참조를 삭제하고 파일을 다시 추가했지만 이번에 " 대상에 추가 "를 선택했습니다.


비슷한 오류가 발생 하여이 방법으로 해결되었습니다 .

'Pods'프로젝트와 앱의 대상에 대해 Build Active Architecture Only를 NO로 설정하십시오.


한 경우에는 새 클래스의 .h 및 .m을 프로젝트로 드래그 할 때이 오류가 발생했습니다. 내가 찾은 유일한 해결책은 이러한 파일에 대한 참조를 제거한 다음 프로젝트 메뉴를 통해 다시 추가하는 것입니다.


TableViewController에서 ViewController.m을 가져올 때 만났습니다. 종료 된 경우 '#import "ViewController.m"'을 삭제하십시오. 이 도움을 바랍니다!


'종료 코드 1로 링커 명령이 실패했습니다 (호출을 보려면 -v 사용)'-iPhone에서 phonegap 애플리케이션을 실행할 때이 오류가 발생했습니다. Build Active Architecture Only를 Yes로 변경했는데 제대로 작동했습니다.


m의 경우 파일을 프로젝트로 끌어다 놓은 후 작동하지 않고 "프로젝트에 파일 추가"파일을 클릭 한 것 같습니다. 둘 다 잘못된 접근 방식이었습니다. 다른 .h 및 .m 파일이있는 프로젝트 폴더 (파인더 내)로 드래그하면됩니다.


내가 얻은 후에

18 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1

저에게 이것은 스위치 케이스에서 "const NSInteger"를 사용했기 때문입니다.

내가 한 일은 const NSInteger를 enum으로 변경하고 참조를 enum 값으로 바꾸는 것입니다.

이것은 나를 위해 오류를 수정했습니다.


이것은 "컴파일 소스"섹션에 일부 파일이 누락되었거나 일부 파일에 대해 중복 항목이 발견 된 경우입니다. 제 경우에는 두 파일에 대해 중복 항목이 있었고 각 파일에 대해 하나의 항목을 삭제하여 문제를 해결했습니다. 도움이 되었기를 바랍니다.


저에게 해결책을 제공 한이 기사찾았 습니다. 이전 버전에서 No Common Blocks의 기본값이 No가 아닌 Yes 인 Xcode 7과 관련됩니다.

이것은 기사의 인용문입니다.

문제는 빌드 설정 창의 "Apple LLVM 6.1-코드 생성"섹션의 "공통 블록 없음"이 최신 버전의 Xcode에서 예로 설정되어 있다는 것입니다.

이로 인해 컴파일 소스에 포함 된 클래스가 다른 소스 파일 (appDelegate.m)의 #import를 통해 참조되는 순환 참조로 설명 할 것입니다. 이로 인해 원래 기본 클래스에서 선언 된 변수에 대한 중복 블록이 발생했습니다.

값을 아니요로 변경하면 앱이 즉시 컴파일되고 문제가 해결되었습니다.


이 오류가 발생하여 iOS 9에만 해당되는 다른 솔루션을 사용해야했기 때문에 이에 대한 새로운 답변을 게시하고 있습니다.

업데이트에서 자동으로 설정되는 빌드 설정에서 비트 코드 활성화를 명시 적으로 비활성화해야했습니다.

참조 답변 : iOS 9의 새로운 경고


[XCODE 7.1 업데이트]

효과가있는 첫 번째 옵션 :

Deployment Target7.1에서 8.1로 변경 했는데 오류가 사라졌습니다.

누군가에게 도움이되기를 바랍니다.

업데이트 (2 일차) : 두 번째로 2 일 만에 여기로 돌아 왔습니다.

둘째 날에는이 성가신 오류 외에도 더 많은 오류가 발생하기 시작했습니다. 문제는 Xcode가 인식하지 못하는 충돌 파일이었습니다. 아래 링크를 도움으로 사용했습니다.

  1. "_OBJC_CLASS _ $ _ viewsampleViewController", 다음에서 참조 :

  2. 'ld : 경고 : 옵션에 대한 디렉토리를 찾을 수 없음'

그리고 궁극적으로 :

  1. "_OBJC_CLASS _ $ _ viewsampleViewController", 다음에서 참조 :

나는 FrameWork Search Paths+ Compile Resources+ Run Script Phases+ 포드 에서 모든 것을 삭제 한 다음 다시 설치하여 궁극적으로 성공했습니다.

내 크기 문제 (2 일째)는 Xcode가 인식하지 못하는 파일이나 파일 충돌 문제가 더 많았습니다.

그러나 궁극적으로 모든 것을 제거하고 (위와 링크에서 언급 함) 많은 시간을 정리하고 pod / frameworks / run 스크립트 단계를 다시 설치하는 것이 도움이되었습니다.

이것이 누군가에게 도움이되기를 정말로 바랍니다.


Running Xcode 4.6.3 on OSX 10.7.5 was able to fix this error by changing Architectures to Native Architecture of Build Machine from $(NATIVE_ARCH_ACTUAL).


I received this once by (accidentally) importing both the .h and .m files into the same class.


I got this error while implementing a subclass without the necessary framework added (MPMoviePlayerController without the MediaPlayer framework, in this example)


I got this same issue when working with Bolts.framework. It turns out that when Bolts gets corrupted, no amount of re-importing will fix the issue. I had to go back to the original download file and reimport it completely from scratch. This fixed it right away. It was such a weird issue that it took me forever to figure it out... hopefully this tip will spare some of you from the same frustrations :)


This occurred for me when I named a UILabel reference and an int the same thing, I didn't get an error when I typed it only when I tried to run it so I didn't realize that that was the problem, but if you have something like a label which is the "score" and you call it score, and name an int which is the score also score then this problem occurs.


Variations on this issue can occur if you have a missing library or file. Check there aren't any missing files in your Project Explorer: they'll be written in red if Xcode can't find them.


"Link Binary With Libraries" had old project name pod library. Fixed after removal.

  1. List item
  2. Project
  3. Build Phases
  4. Link Binary With Libraries
  5. Remove deprecated library.

I had this same issue with a library, and I tried all of the answers listed here and nothing helped.

I ended up simply removing the library from Link Binary With Libraries and then re-adding it and it worked fine.


The only (and unfailing) way to resolve this issue is building test from command line:

xcodebuild -workspace MyProject.xcworkspace/ -scheme MyScheme -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.3.1' test

So, at this point, your compilation will surely fail but you'll see all linking problem. In my case, I had several problem such as:

  • ld: framework 'Foo' not found
    To resolve this, you need to on your target, BuildSettings->Linking->OtherLinkerFlags and remove 'Foo' framework .
  • Use of unresolved identifier 'ClassName' .
    To resolve this, I need to add/check file's target membership to UITest target too.

Other possible problems will be raised by xcodebuild and you can easily fix it.


간단히 CMD+ SHIFT+를 청소 K한 다음 CMD+ 빌드 B가 나를 위해 일했습니다.


제 경우에는 기타 링커 플래그의 라이브러리에 대한 참조가있었습니다. 그것을 제거하면 오류가 제거되었습니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력


나는 같은 오류가 있었다. 더 이상 사용하지 않는 오디오 프레임 작업을 가져 왔습니다. 나는 그것을 제거하고 (삭제하지 마십시오!) 성공적으로 구축되었습니다.

참고 URL : https://stackoverflow.com/questions/10435213/build-failed-with-ld-duplicate-symbol-objc-class-algebra5firstviewcontrolle

반응형