2009-08-18 3 views
2

내 프로젝트가 내내 잘 작동했는데 오늘은 프로젝트에 admob 라이브러리를 추가 했으므로 컴파일되지 않습니다!iPhone SDK 프로젝트에서 컴파일 할 때 이상한 중복 기호가 있습니까?

ld: duplicate symbol .objc_category_name_NSCharacterSet_NSCharacterSet_Extensions in /Photo/libAdMobSimulator.a(NSCharacterSet_Extensions.o) and /Photo/build/Photo.build/Debug-iphonesimulator/Photo.build/Objects-normal/i386/NSCharacterSet_Extensions.o 

어떻게 수정 : 여기

오류인가?

답변

1

당신은 모두 libAdMobSimulator과 사진 (응용 프로그램/번들)에서 코드

에 정의 NSCharacterSet에 카테고리 NSCharacterSet_Extensions 당신은 즉, 이러한 범주 중 하나의 이름을 변경해야합니다 범주 이름이 고유해야합니다.

0

# import 대신 #include를 헤더 파일에 사용 했습니까? 이 경우에는 적용 할 수 있을지 모르지만 중복 심볼을 가져 오는 방법 중 하나입니다.

2

후속 메모 : 인기있는 touchjson 라이브러리가 포함되어 있으므로이 오류가 발생했습니다. admob 도서관은 그 자신의 사본과 함께 온다. 그리고 이것은 나에게 충돌을 초래했던 것이다. 프로젝트에서 touchjson 라이브러리의 사본을 제거하십시오.

0

필자가 만든 범주에서 .h 및 .m 파일을 전환하는 실수를 저지른 경우이 오류가 발생했습니다. 희망이 사람이 같은 일을하는 데 도움이되기를 바랍니다 :)

2

나는 똑같은 문제가 있었는데, 같은 이유로,이 모든 것이 수정되었습니다.

ObjC 및 -all_load는 TARGET의 "기타 링커 플래그"에 있어야합니다. 카테고리가 성공적으로 연결되었지만 일부 "중복 된 심볼"로 인해 앱이 빌드되지 않기 때문에 동일한 문제가 발생하는 경우이를 알 수 있습니다.

Dang.

그러나 기대 - JDEE 지적과 같이

i got this error as I had included the popular touchjson library. the admob library comes with its own copy

을 그리고 당신은 포함 TouchJSON의 복사본을 삭제하면 문제까지 참으로 명확하지 않습니다.

여전히 ... 이상적이지 않습니다. 나는 거기에있는 TouchJSON의 버전이 좋다고 확신하지만, 나는 미래에 업데이트 할 수 있기를 정말 바라고있다.

This guy 다른 해결책이 있지만 TouchJSON에서 사용하는 모든 이름의 이름이 변경됩니다. 이상적이지 않습니다.

저는 지금 당황하고 있습니다.하지만 운이 좋게 빠른 수정을 위해 운이 좋지는 않습니다. 그래도 인기있는 정적 라이브러리의 개발자라면 이런 종류의 충돌을 피할 수있는 방법에 대해 괴롭히는 사람들의 의견을 듣는 것이 좋을 것입니다.

다른 주제가 있습니다. 우리가이 부분들 주위에서 어떤 감각을 얻을 수 있는지보십시오.

UPDATE :

프로젝트에서 TouchJSON의 복사본에서 헤더 파일을 둡니다. 구현 파일을 제거한 다음 오브젝트 파일을 만들지 않으면 충돌이 발생하지 않습니다. 이 점에 대한 최종 힌트는 this post about a similar conflict involving cocos2d에게 감사드립니다.

관련 문제