arm64 아키텍처에 대한 중복 기호


103

Xcode 프로젝트를 실행하려고하면 중복 된 기호가 있다는 오류와 함께 실패합니다. 나는 온라인에서 이러한 중복을 찾았지만 운이 없었습니다.

여기에 이미지 설명 입력

이 문제를 해결하는 방법에 대한 아이디어가 있습니까?


1
그것은 당신이 BFAppLinkReturnToRefererView의 너무 많이 생겼고
안드레이 Chernukha

또한 데스크톱에있는 프레임 워크에 연결하는 대신 프로젝트를 약간 정리할 수도 있습니다. :)
picciano

제 경우에는 extern NSString * const tColor를 추가했습니다. .h 파일 및 NSString const * tColor = @ "# 000022"; 두 개의 다른 .m 클래스에서.
ios_dev

여기에서 찾을 수 있습니다. stackoverflow.com/a/46678210/988941
MoOx

답변:


65

오류로 인해 FacebookSDK.framework에 이미 Bolts.framework 클래스가 포함되어있는 것으로 보입니다. 프로젝트에서 추가 Bolts.framework를 제거해보십시오.


22
어떻게? 당신은 저를 단계별로 안내하시기 바랍니다 수 있습니다
Imdad 알리

68

저에게는 "공용 블록 없음"컴파일러 설정을 NO로 전환하는 데 도움이되었습니다.이 설정은 여기에 설명되어 있습니다. GCC_NO_COMMON_BLOCKS는 무엇에 사용됩니까?


당신은 남자입니다! 방금 새 xCode 7.3.1 프로젝트를 만들고 기본 설정은 YES입니다. :(
Yaro

4
이 옵션은 Xcode의 "권장 설정으로 프로젝트 업데이트"창에 의해 설정되었습니다.
commscheck

당신은 최고입니다
showmyroutes

귀중한 팁이지만 doh는 내 경우에 도움이되지 않았습니다! : O
Fattie 2018

49

Xcode 8을 사용하여 "권장 설정으로 프로젝트 업데이트"옵션이 내 프로젝트에 대해 '공통 블록 없음'을 켭니다.

다시 끄면 모든 것이 해결되었습니다.


2
프로젝트를 권장 설정으로 업데이트하려면 어떻게해야합니까? 어떤 메뉴에서?
Sazzad Hissain 칸

@SazzadHissainKhan 빌드 설정에 있습니다.
여행

21

나를 위해 실수로 파일을 .h가 아닌 .m으로 가져온 것입니다.


즉 LOL하지만 사실, D
블라디미르

이것은 단지 내가 everyting에 대한 코드 완성을 비난 .. 나에게 무슨 일이 있었
user426132

21

포드를 다운 그레이드하는 동안 포드를 엉망으로 만들었 으며 포드를 제거하고 다시 설치하여 arm64 아키텍처의 중복 기호 문제를 해결했습니다 .

pod deintegrate
pod install

CocoPods-3.9.0을 통해 통합 된 Google Places SDK를 사용하고 있었는데이 답변으로 문제가 해결되었습니다.
andrewlundy

11

또 다른 해결책은 다음과 같습니다.

선택 프로젝트 -> 대상 -> 빌드 단계 -> 컴파일 소스 -> 귀하의 경우에는 (3 마지막 오류 라인에 언급 된 파일을 검색 BFAppLinkReturnToRefererView.o ).

그러면 검색 결과에 1 개 또는 2 개의 파일이 표시됩니다.

그중 하나를 제거 하고 다시 컴파일하십시오. . 파일이 하나만 남아 있고 빌드 충돌이 더 이상 없기 때문에 지금 다시 컴파일해야합니다.

그래도 작동하지 않으면 파일에 오류가있을 수 있으므로 모두 제거하고 다시 컴파일해야합니다. 다시 작동합니다.


2
매우 과소 평가 된 답변입니다. 도움을 주셔서 감사합니다, Lukas! :)
patreu22

그것은 당신의 문제 : sloved 없음 문제 기뻐

10

Xcode 8로 업그레이드 할 때 권장 설정으로 업그레이드하라는 메시지가 표시됩니다. 나는 수락했고 모든 것이 업데이트되었습니다. 컴파일 시간 문제가 발생하기 시작했습니다.

XXXX에 대한 중복 기호 XXXX에 대한 중복 기호 XXXX에 대한 중복 기호

총 143 개의 오류. 대상-> 빌드 설정-> 공통 블록 없음-> 아니오로 설정하십시오. 이것은 문제를 해결했습니다. 문제는 통합 프로젝트에 공통된 코드 블록이있어서 컴파일 할 수 없다는 것입니다. 설명은 여기 에서 찾을 수 있습니다 .


9

이 오류는 링커가 obj 파일을 링크하려고 할 때 발생합니다. 이 오류에 대해 생각할 수있는 몇 가지 이유는 다음과 같습니다.

  1. 복제 된 함수 / 클래스는 프로젝트의 서로 다른 두 위치 / 파일에 정의되어 있으며 그중 하나만 빌드 명령의 변형에 대해 컴파일해야했습니다. 그러나 어떻게 든 두 파일 모두 프로젝트에서 컴파일되었습니다. 따라서 컴파일해야하는 파일 목록에 src 파일을 추가하는 if-else 조건 또는 기타 종속성을 확인하고 특정 빌드 명령에 대해 불필요한 파일을 제거해야합니다.

  2. 복제 된 함수 / 클래스가 프로젝트의 서로 다른 두 위치 / 파일에서 실수로 정의되었습니다. 잘못된 정의를 제거하십시오.

  3. 다시 빌드하기 전에 OBJ 디렉토리를 정리하십시오.이 충돌을 일으킬 수있는 이전 빌드의 오래된 obj 파일이있을 수 있습니다.

추신 나는 전문가가 아니지만 이것이 내가 직면했을 때이 문제를 해결 한 방법입니다. :)


9

Xcode 7 또는 8로 이동하고 정말 오래된 프로젝트를 여는 경우이 문제가 발생했습니다.

SomeConstFile.h

NSString * const kAConstant;

SomeConstFile.m

NSString *const kAConstant = @"a constant";

이전 버전의 컴파일러는 헤더 파일의 정의가 extern이라고 가정 했으므로 SomeConstFile.h를 여기 저기에 포함하는 것이 좋습니다.

이제 이러한 const를 extern으로 명시 적으로 선언해야합니다.

SomeConstFile.h

extern NSString * const kAConstant;

1
감사합니다! 내가 만들고 있던 constants.h 파일 문제로 고군분투하고 있었다
김성민

1
... 내가 너무 나를 위해 일한 동일한 문제와 답을 직면 한 답변을 주셔서 감사합니다
reetu

1
덕분에, 나는 지난 3 ~ 4 시간 동안이 문제에 대해 고민했다
수밋 쿠마 사하

9

아래 패치는 나를 위해 작동합니다 .. :)

Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No

Step 2: Go to TARGETS -> Build Settings -> enable testability -> No

다시 NO로 설정하면 문제가 해결되었습니다!


2
2 단계 : 내 문제를 해결했습니다. 감사합니다 :)
Dorald

2

글쎄, FB와 같은 SDK 또는 Vuforia 또는 GoogleAnalytics와 같은 라이브러리를 사용할 때 샘플 프로젝트를 추가하면 프레임 워크 등이 이미 포함되어 있다는 문제가 발생할 수 있으므로 이미있는 동안 수동으로 추가 한 기호를 반복하지 않도록해야합니다. 샘플에 포함


2

저에게 문제는 const 생성 스타일이었는데,이 iOS8까지 잘 작동했습니다.

int const kView_LayoutCount = 3;

내 .h 파일에. 공통 블록이 NO로 설정되면 6 줄의 결과로 636 개의 링커 파일이 생성되었습니다. (예인 경우 14k +). 값 선언 및 컴파일의 .h를 제거한 후 행을 .m으로 이동했습니다.

이것이 다른 사람들에게 도움이되기를 바랍니다!


2

제 경우에는 이유가 너무 어리 석었습니다.

매크로가 정의 된 Constant.h 파일이 있습니다. 나는 거기에서 NSString을 할 생각을했다. 그리고 이렇게 :

NSString const *kGreenColor = @"#00C34E";

이로 인해 아키텍처 arm64 및 링커 명령에 대한 중복 기호 문제가 발생했습니다. 종료 코드 1로 실패했습니다. const NSString 줄을 제거하면 저에게 효과적 이었습니다.


2

포함 파일을 확인하십시오. 실수로 "filename.h"대신 "filename.m"을 가져 왔기 때문에이 문제가 발생했습니다. 자동 수정 (탭)은 "h"가 아닌 "m"을 입력했습니다.


정말 감사합니다. 제가이 실수를 저질렀다는 사실을 몰랐습니다. 다시 한 번 감사드립니다 👍
Supertecnoboff

1

오류에서 모든 클래스가 여러 번 나타나는 것으로 나타났습니다. 작동 할 클래스를 찾아 제거했습니다.

AppDelegate.h 및 .m 파일을 여러 번 생성하고 있습니다. 그래서이 오류가 발생합니다. 마지막으로 저에게 잘 작동하는 클래스를 찾아 제거했습니다.


1

이 문제를 해결하려면 빌드 단계로 이동하여 (facebookSDK, unityads)와 같은 중복 파일을 검색하고 (확장자 file.o)를 삭제 한 다음 다시 빌드하십시오.


0

나를 위해 sampleMethodViewController_A에서 호출되는 메서드를 만들고 ViewController_B에서도 동일한 메서드를 만들었습니다.이 오류가 발생하여 ViewController_B의 메서드 이름을 secondSampleMethod. 오류를 수정했습니다.

코드를 줄이고 여러 곳에서 동일한 코드를 복제하지 않는 좋은 기능처럼 보입니다.

No Common 블록을 Yes에서 No로 변경 한 다음 테스트 가능성을 Yes에서 No로 설정하려고했습니다. 작동하지 않았습니다. 빌드 단계에서도 중복 파일을 확인했지만 중복 파일이 없습니다.


0

이 문제는 메서드 외부에있는 .m에서 변수를 느리게 정의한 다음 다른 .m 파일에서 메서드 외부에서 같은 이름을 가진 다른 변수를 정의했기 때문에 발생했습니다. 이로 인해 전역 변수 이름 중복 문제가 발생했습니다.


0

나에게 문제는 수동으로 프레임 워크를 포함했지만 내가 그렇게했는지 모르는 CocoaPods에 동일한 프레임 워크를 포함 시켰다는 것입니다. 둘 중 하나를 제거하면 문제가 사라졌습니다.



0

나는 "아키텍처 armv7에 대한 중복 기호 158 개, 아키텍처 arm64에 대한 중복 기호 158 개"라는이 오류를 해결할 수있었습니다. C ++ 코드 또는 파일에 대한 참조가있는 프레임 워크 또는 정적 라이브러리 상속 이를 처리하는 쉬운 방법은 .m 파일의 확장자를 .mm로 변경하는 것입니다. 이것이 Swift에서는 확실하지 않지만 Objective C를 사용하는 경우 처리되는 방법입니다.

또한 빌드 설정에서 "다른 링커 플래그"를 -lc ++로 업데이트 할 수 있습니다.


0

누군가 Flutter에서이 작업을 실험하고 있다면 pod deintegrate, pod init를 시도하지 마세요.

해결 방법은 flutter clean, flutter run -d [iOS Device]를 실행하는 것입니다.

희망은 누군가를 도울 수 있습니다.


0

Plz 설정을 변경합니다.

1 단계 : TARGETS-> Build Settings-> No Common Blocks-> No로 이동합니다.

2 단계 : TARGETS-> Build Settings-> enable testability-> No로 이동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.