programing

Xcode 아래 x86_64 아키텍처에 대한 중복 기호

lastmoon 2023. 4. 22. 10:01
반응형

Xcode 아래 x86_64 아키텍처에 대한 중복 기호

저는 지금 위의 제목과 같은 질문을 하고 있습니다만, 아직 정답을 찾지 못했습니다.에러가 발생했습니다.

    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

어떤 도움이라도 감사합니다.

마지막으로 이 에러의 원인을 알 수 있습니다.그 이유는 다음과 같습니다.-ObjCOther Linker Flags이 값을 삭제하면 프로젝트를 성공적으로 구축할 수 있는데, 이유는 알 수 없습니다.가가 이걸 명명 ??? ???

저는 "No Common Blocks"를 "Yes"에서 "No"로 변경하면 (타깃 -> 빌드 설정 -> Apple LLVM - 코드 생성) 문제가 해결되었습니다.

놈,?#import을 거행하다.m 철하다

x86_64 아키텍처용 중복 기호 75개

동일한 기능을 두 번 로드한 것을 의미합니다.동일한 기능을 두 번 로드했음을 의미합니다. As the issue disappear after removing 제거 후 문제가 사라지기 때문에-ObjC부에서Other Linker Flags,이 옵션을 두 번 로드하는 이 옵션은 : 션 능 드 로 됩 loads this means that result twice option다번니 that즉두 this,기옵)를 두 번 더 많은 기능을 두 번들 중

테크니컬 Q&A에서

이 플래그를 사용하면 링커는 Objective-C 클래스 또는 카테고리를 정의하는 라이브러리의 모든 객체파일을 로드합니다.이 옵션은 일반적으로 (어플리케이션에 추가 오브젝트코드가 로드되어 있기 때문에) 실행 가능한 파일이 커지지만 기존 클래스의 카테고리를 포함하는 효과적인 Objective-C 정적 라이브러리를 성공적으로 만들 수 있습니다.

https://developer.apple.com/library/content/qa/qa1490/_index.html

제 경우 다음과 같은 상수 문자열을 정의하기 위해 헤더 파일을 만들었습니다.

NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";

I solved this scenario by using 저는 이 시나리오를static:

static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";

다른 클래스에 같은 이름의 const 변수를 선언할 때도 발생합니다.

파일의 Message.m

const int kMessageLength = 36;

@implementation Message

@end

파일 Chat.m

const int kMessageLength = 20;

@implementation Chat

@end

저도 같은 문제가 있어요.[ Project Target ]> [ Build Setting ]> [ No Common Blocks ]패스의 Xcode 7.2에서 NO로 변경합니다.

저는 그 문제에 대해 인정된 답변을 찾았지만 해결에는 도움이 되지 않았습니다. 이 답변이 매우 짜증나는 문제에 도움이 되기를 바랍니다.

duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:

17 duplicate symbols for architecture x86_64

"같은 기능을 두 번 로드했음을 의미합니다.ObjC를 Other Linker Flags에서 삭제하면 문제가 사라지기 때문에 이 옵션을 사용하면 기능이 두 번 로드됩니다."

평신도들의 표현으로는, 이것은 우리 프로젝트에 정확히 같은 이름의 파일이 두 개 있다는 것을 의미합니다.하나의 프로젝트를 다른 프로젝트로 결합하는 것은 아닐까요?「복제 심볼」에러 위에 있는 에러를 봐 주세요.복제된 폴더는, 제 경우는 BLoginViewController 였습니다.

예를 들어, 아래 그림에서는 2개의 BIMageViewController가 있는 것을 알 수 있습니다.이것이 문제의 원인입니다.

하나를 삭제하자마자 문제가 사라졌습니다. :)

여기에 이미지 설명 입력

2년 전 Objective-C에서 개발한 프로젝트의 "권장 설정" 팝업을 받아들였을 때 이 일이 일어났습니다.

이 문제는 " 권장 설정" 업데이트, x 코드 제 다 니 습 로 으 었 ended 동 드 면 이 을 settings problem the가 was, accepted"수GCC_NO_COMMON_BLOCKS = YES;.

This made the build failed with the 이것에 의해, 에 의한 빌드가 실패했습니다.duplicate symbol업데이트한 프로젝트에서 오류가 발생했습니다. 바꿨어요.No Common Block로로 합니다.NO오류가 사라졌습니다.

Cocoapods 설치 후 이 문제가 발생하였습니다.이제 몇 개의 팟을 업데이트할 때마다 발생합니다.찾은 솔루션:

터미널로 이동:

1) pod deintegrate
2) pod install

또한 빌드 설정에서 "Always Embed Swift Libraries" 항목을 선택하십시오.디폴트 설정을 사용하고 있는 것을 나타내는 「페이드」가 되어 있을 필요가 있습니다.수동으로 YES로 설정되어 있는 경우는, 그 위에 delete 키를 눌러 디폴트 설정으로 되돌립니다.이것으로 동작이 정지되었습니다.

중복을 찾는 가장 빠른 방법은 다음과 같습니다.

  1. 타겟으로 이동
  2. 빌드 단계로 이동
  3. 컴파일 원본으로 이동
  4. 중복 파일을 삭제합니다.
  • 타겟으로 이동
  • 빌드 설정 선택
  • "No Common Blocks"를 검색하여 "NO"로 선택합니다.

그것은 나에게 효과가 있었다.

다음 단계로 문제가 해결되었습니다.

  1. 대상 설정의 빌드 단계로 이동합니다.
  2. "라이브러리와 바이너리 연결"로 이동합니다.
  3. 라이브러리가 2회 존재하는지 확인합니다.
  4. 다시 빌드합니다.

ObjC를 Other Linker Flags에서 삭제하거나 실수로 .h 대신 .m 파일을 Import했는지 확인하십시오.

2021년 Xcode 12에 대한 답변을 갱신합니다.X:

pod deintegrate 
pod install

이게 도움이 됐으면 좋겠네요!

Xcode 7.3에서 오픈한 레거시 프로젝트의 상황은 다음과 같습니다.

duplicate symbol _SomeEnumState in:

이어서 관련 없는 두 개의 파일 목록이 나타납니다.o. 그 후 이 작업을 여러 번 반복한 후 마지막으로:

ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

이 문제를 해결한 것은 열거형 선언을 다음과 같이 바꾸는 것이었습니다.

enum SomeEnumState {
    SomeEnumStateActive = 0,
    SomeEnumStateUsed = 1,
    SomeEnumStateHidden = 2
} SomeEnumState;

다음과 같이 입력합니다.

typedef NS_ENUM(NSUInteger, SomeEnumState) {
    SomeEnumStateActive = 0,
    SomeEnumStateUsed = 1,
    SomeEnumStateHidden = 2
};

이것에 대한 설명을 듣고 있는 사람이 있으면 가르쳐 주세요.

여러 클래스의 @implementation 아래에 동일한 변수를 정의해도 이 문제가 발생할 수 있습니다.

제 경우, 그 장소에 같은 이름의 파일이 두 개 있었습니다.

[ Targets ]> [ Build Phases ]> [ Compile Sources ]를 선택하여 중복된 파일을 삭제합니다.

Xcode8 권장 프로젝트 설정 중에 "No Common Blocks(공통 블록 없음)"를 YES(예)로 업데이트하면 이 문제가 발생합니다.

문제는 아키텍처 x86_64에 5개의 심볼이 중복되어 있다는 것입니다.과 그 저는 변화에 대한 .GCC_NO_COMMON_BLOCKS = YES로로 합니다.NO

하지만 내 밑에서 일하는 대신 복제품 5개에서 복제품 1개로...

그래서 저는 마지막 오류에 주의를 기울였고, 무엇이 문제인지 깨달았습니다.그리고 그것은 이 패키지와의 "호환성"이었습니다(둘다package.json

rn-fetch-blob
react-native-blob-util

했고, 는 그것을했다.rn-fetch-blob왜냐하면 왜 내 프로젝트에 들어갔는지 모르겠지만, 나는 단지 농담으로 그것을 사용하고 삭제했을 뿐이고, 그것은 문제가 되지 않았다.

그 한 후 " " "를 실행합니다.yarn다시 문제 해결..., 「이것」을 하지 ,GCC_NO_COMMON_BLOCKS

가 발생했습니다.는 「이러다」입니다.duplicate정정: :

1. Remove the duplicate file at Build Phases-->Compile Sources
2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE :

참조를 삭제하다

3. Add the file to your project again
4. Add the file's .m to your Build Phases-->Compile Sources again
5. Build your project, the error will disappear

이 에러의 원인이 되는 또 하나의 바보 같은 실수는 반복 파일입니다.실수로 파일을 두 번 복사했어요.먼저 타겟 -> 빌드 단계 -> 소스 컴파일 순으로 진행했습니다.그 목록에서 몇 개의 파일과 그 위치를 두 번 발견했습니다.

실수로 .m 파일을 가져오지 않았는지 확인하십시오. 프로젝트 창에서 파생 데이터를 삭제한 다음 빌드하여 다시 실행해야 할 수도 있습니다.

포드 저장소를 추가해도 동일한 오류가 발생함

pod 'SWRevealViewController'

gitHub에서 이미 추가된 소스 코드(SWRevealViewController)에 대해 설명합니다.따라서 소스 코드 또는 포드 저장소를 제거하면 오류가 수정됩니다.

케이스 2:

두 번째로.h 파일에서 상수를 선언했을 때 이 오류가 발생하였습니다.

NSString * const SomeConstant  = @"SomeValue";
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
...
...

위의 솔루션 중 어느 것도 효과가 없습니다.그냥 제가 고친 겁니다.

는 나의 .core data model내가 직접 만들긴 하지만.xcdatamodeld검사관님, 선택하겠습니다.Class DefinitionCodegen 나는 ''를 선택합니다.Manual/None고쳐졌어요

이것이 당신에게 도움이 되기를 바랍니다!

이 문제를 겪고 있는 다른 사람을 위해, 나는 이 대답들 중 어느 것도 나의 결심을 보지 못했다.

수동으로 해결된 .pbxproj Marge 충돌이 발생한 후(불량이지만), .pbxproj의 개별 클래스 파일에 대한 중복 참조가 있었습니다.[ Project ]> [ Build Phases ]> [ Compile Sources ]에서 삭제하면 모든 것이 수정되었습니다.

이게 누군가 도움이 되길 바라.

Juice007과 마찬가지로 두 개의 다른 .m 파일에서 C형 변수를 선언하고 초기화했습니다(가져오지 않았습니다).

BOOL myVar = NO;

단, 변수를 선언 및 초기화하는 이 방식은 @interation에서도 .m으로 선언 및 초기화할 수 있습니다.옵션은 다음과 같습니다.

  1. static으로 선언하고 범위를 클래스로 제한합니다.

    static BOOL myVar = NO;
    
  2. 초기화를 삭제합니다(이것에 의해, 2개의 클래스가 글로벌 변수를 공유합니다).

    BOOL myVar;
    -(void) init{
        myVar = NO;
    }
    
  3. 속성으로 선언:

    @property BOOL myVar;
    
  4. @interface에서 적절한 iVar로 선언합니다.

    @interface myClass(){
        BOOL myVar;
    }
    @end
    

저 같은 경우에는 두 개 있었어요.main()프로젝트 내에서 정의된 방법을 제거하고 문제를 해결했습니다.

위의 답변은 나에게 효과가 없었다.어떻게 대처했는지는 다음과 같습니다.

1) Finder에서 Pods 폴더 전체를 삭제하고 Podfile.lock 파일 2) xcode 프로젝트를 닫습니다 3) 터미널에서 pod 설치 실행 4) xcode 프로젝트를 열고 clean build 명령을 실행합니다.

그 후엔 날 위해 일했지

왜냐면 난 이 답을 못 봤거든

포드 파일을 제거하고 다시 설치하십시오!이전에 추가한 라이브러리를 삭제 또는 제거합니다.cocods

앱을 구축하는 데 3번 이상 이 문제에 부딪혔지만 매번 이렇게 해결되었습니다.:)

저도 방금 이 오류가 발생했습니다.같은 이름의 글로벌 스코프로 선언된 변수가 프로그램으로 컴파일되는 파일 전체에서 반복되고 있는 것이 문제의 원인임을 알게 되었습니다.글로벌 변수를 로컬 스코프로 의사 메인 함수로 변경하면 오류가 해결되었습니다.

언급URL : https://stackoverflow.com/questions/24298144/duplicate-symbols-for-architecture-x86-64-under-xcode

반응형