Objective-C 빌드의 중복 기호 오류?
빌드 + 디버그를 누르면이 오류가 발생합니다.
ld: duplicate symbol .objc_class_name_BlogTableItemCell in /Users/fabian/Development/Workspaces/iphone_experiments/xcode_build_output/MausLog.build/Debug-iphonesimulator/MausLog.build/Objects-normal/i386/BlogTableItemCell-3733583914888A7B.o and /Users/fabian/Development/Workspaces/iphone_experiments/xcode_build_output/MausLog.build/Debug-iphonesimulator/MausLog.build/Objects-normal/i386/BlogTableItemCell-3733583914888A7B.o
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
코드의 다른 위치에서 동일한 BlogTableItemCell 클래스를 두 번 컴파일하는 것 같습니다. 이는 다음과 같은 경우에 발생할 수 있습니다.
동일한 클래스 구현을 두 개의 다른 파일에 넣었습니다.
실제로이 클래스의 구현이 하나 뿐이지 만 이름이 정확히 동일한 클래스를 포함하는 프레임 워크 또는 라이브러리를 프로젝트에 연결합니다.
전체 프로젝트에서 수업을 찾아보고 프로젝트 내에서 하나의 사본 만 사용할 수 있는지 확인하십시오.
실수로 #import 문에 대한 Xcode의 자동 완성이 '.h'대신 '중복'클래스에 대해 '.m'파일을 지정하도록 한 경우에도이 오류가 발생할 수 있습니다.
나를 위해 '공통 블록 없음'을 예에서 아니요로 변경합니다 (Targets-> Build Settings-> Apple LLVM-Code Generation 아래). 
불쌍한 정의로 인해 비슷한 문제가 발생했습니다. 내 헤더에 const를 정의했습니다.
int const kCropLocationTop = 1;
이것은 아마도 여러 번 가져 왔을 것입니다. 수정하기 위해 헤더 정의를 다음과 같이 변경했습니다.
extern int const kCropLocationTop;
const 할당을 .m 파일로 이동했습니다.
int const kCropLocationTop = 1;
나처럼 단순한 객관적인 c 개념에 무지한 사람에게 도움이되기를 바랍니다.
iPhone : 중복 기호 오류? user576924 프로필
나를 위해 올바르게 대답했습니다. 그러나 문제가되는 gremlin을 찾으려면이 ZSH 스 니펫.
grep "import.*\.m" **/*.[hm]
오류가있는 곳을 즉시 알려줍니다.
실수로 소스 파일이 프로젝트-> 빌드 단계-> 소스 컴파일에 두 번 포함되었습니다. 그중 하나를 제거하면 문제가 해결되었습니다.
이 오류의 가장 일반적인 이유는 xyz.h 파일 대신 xyz.m 파일을 가져 오기 때문입니다. 수입품에 다음과 같은 내용이 포함되어 있는지 확인하십시오.#import "----.m"
추가하기 만하면됩니다. Xcode를 사용하여 하위 클래스 관리 개체 (핵심 데이터)를 생성하면 생성 된 파일이 복제 될 수 있습니다. 나에게 수정 사항은 생성 된 파일을 삭제하고 다시 생성하는 것이 었습니다.
이 문제를 직접 만났습니다. 목록의 경우 또 다른 가능성이 있습니다.
프로젝트 파일에 중복 된 연결 줄이 있습니다.
실수로 라인을 복제했을 때 SVN 업데이트에서 병합 충돌이 발생했습니다.
나에게도 일어났다. 제 경우에는 자동으로 생성 된 핵심 데이터 중 하나 (하나만)가 두 번 삽입되었습니다. 나는 Build Phases ... Compile Sources를보고 중복을 발견했습니다. 발생 중 하나를 삭제하는 것만으로 문제가 해결되었습니다.
목록에 또 다른 가능한 원인을 추가하는 중 ... 구현 파일에 여러 상수를 잘못 만들었을 수 있지만 구현 외부에 동일한 이름을 사용했습니다.
HeaderFileOne.m에서
NSString * const kCoolConstant = @"cool";
HeaderFileTwo.m에서
NSString * const kCoolConstant = @"cool";
따라서 이러한 상수 이름 중 하나를 변경하면 컴파일 오류가 수정됩니다.
나는 또한이 문제에 직면했다. 내 솔루션은 다른 클래스의 이름과 동일한 이름을 가진 전역 변수 중 하나의 이름을 바꾸는 것입니다. 도움이 되었기를 바랍니다
이것은 누군가를 도울 수 있습니다
ViewController를 복제 한 다음 이름을 변경했기 때문에이 오류가 발생했습니다. 그래서 컴파일 할 때이 오류가 발생했습니다. 그 이유는 두 뷰 컨트롤러에 동일한 이름을 가진 "float"변수가 있었기 때문입니다. 즉 "float padding = 10.0"이 클래스 수준에서 정의했습니다. 뷰 컨트롤러 중 하나에서 위에서 언급 한 변수의 이름을 바꾸면 문제가 해결되었습니다.
지역화 가능한 xib 파일을 가지고 노는 동안 똑같은 일이 일어났습니다. 우연히 두 개의 구현 파일을 만들었고 제 경우에는 문제를 일으켰습니다. 동일한 실수를하지 않고 구현 파일을 삭제 / 재생성 한 후 오류가 수정되었습니다.
개발자 중 한 명이 "libSoomla *"프로젝트 파일을 두 번 남겨 두었습니다. 중복 된 soomla 파일을 제거하고 다시 빌드 한 후 수정했습니다!
도움이 되었기를 바랍니다.
경우에 따라이 심볼릭 링크를 만들도록 지시 한 새 버전의 Subversion을 빌드하기 위해 몇 가지 지침을 따랐습니다.
ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain
이제 나는 정말로 Windows 사람이므로 즉시 명확하지는 않았지만 링크를 제거하면 문제가 해결되었습니다 (XCode를 다시 시작한 후).
rm /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain
휴.
(내가 얻은 실제 오류는 여기에 설명 된 오류입니다 : 빌드 오류 중복 기호 arclite.o )
.m File을 가져 오지 않았는지 확인하십시오. 나를 위해 나는 #import "SchoolCommuterHome.h"대신에 #import "SchoolCommuterHome.m"을 추가했습니다.
참고 URL : https://stackoverflow.com/questions/2264455/duplicate-symbol-error-in-objective-c-build
'Program Club' 카테고리의 다른 글
| didSelectRowAtIndexPath : 호출되지 않음 (0) | 2020.12.13 |
|---|---|
| Swift에서 UITextField / UIView에 대한 애니메이션 흔들기 (0) | 2020.12.13 |
| LINQ는 느리기 때문에 피해야합니까? (0) | 2020.12.13 |
| 높이 전환 방법 : 0; (0) | 2020.12.13 |
| Google Keep API가 있습니까? (0) | 2020.12.13 |