나는 위의 제목과 동일한 질문을 받았지만 아직 정답을 찾지 못했습니다. 오류가 발생했습니다.
/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)
도움을 주시면 감사하겠습니다.
마지막 으로이 오류의 원인을에 추가 -ObjC
했습니다 Other Linker Flags
. 이 값을 제거한 후 프로젝트를 성공적으로 빌드 할 수 있지만 그 이유를 모르겠습니다. 누구든지 이것을 설명 할 수 있습니까?
답변
x86_64 아키텍처를위한 75 개의 중복 심볼
동일한 기능을 두 번로드했음을 의미합니다. -ObjC
에서 제거한 후 문제가 사라짐에 따라 Other Linker Flags,
기능을로드하는이 두 번 즉,이 옵션의 결과를 :
기술 Q & A에서
이 플래그는 링커가 라이브러리에서 Objective-C 클래스 또는 카테고리를 정의하는 모든 오브젝트 파일을로드하게합니다. 이 옵션은 일반적으로 응용 프로그램에로드 된 추가 객체 코드로 인해 더 큰 실행 파일을 생성하지만 기존 클래스의 범주를 포함하는 효과적인 Objective-C 정적 라이브러리를 성공적으로 만들 수 있습니다.
https://developer.apple.com/library/content/qa/qa1490/_index.html
답변
나를 위해 ‘No Common Blocks’를 Yes에서 No로 변경하면 (대상-> 빌드 설정-> Apple LLVM-코드 생성에서) 문제가 해결되었습니다.
답변
어리석은 일이지만 실수 #import
로 .m
파일을 편집 하지 않았는지 확인하십시오.
답변
필자의 경우 다음과 같이 상수 문자열을 정의하기 위해 헤더 파일을 만들었습니다.
NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
나는 다음을 사용 하여이 시나리오를 해결했다 static
.
static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
답변
승인 된 답변이 문제에 관한 것으로 나타 났지만 문제를 해결하는 데 도움이되지 않았습니다.이 답변이 매우 실망스러운 문제에 도움이되기를 바랍니다.
duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:
17 duplicate symbols for architecture x86_64
“같은 함수를 두 번로드했음을 의미합니다. 다른 링커 플래그에서 -ObjC를 제거한 후 문제가 사라 지므로이 옵션으로 인해 함수가 두 번로드됩니다.”
평신도의 관점에서 이것은 프로젝트에 정확히 동일한 이름을 가진 두 개의 파일이 있음을 의미합니다. 어쩌면 한 프로젝트를 다른 프로젝트로 결합하고 있습니까? “중복 심볼”오류 위의 오류를 살펴보고 어떤 폴더가 복제되는지 확인하십시오. 제 경우에는 BLoginViewController였습니다.
예를 들어 아래 이미지에서 두 개의 BImageViewController가 있음을 알 수 있습니다.이 문제의 원인입니다.
하나를 삭제하자마자 문제가 사라졌습니다 🙂
답변
나는 같은 문제가 있습니다. 프로젝트 대상> 빌드 설정> 공통 블록 없음 경로의 Xcode 7.2에서 NO로 변경합니다.
답변
다른 클래스에서 동일한 이름을 가진 const 변수를 선언 할 때도 발생합니다.
Message.m 파일에서
const int kMessageLength = 36;
@implementation Message
@end
파일 Chat.m에서
const int kMessageLength = 20;
@implementation Chat
@end