2014-06-10 2 views
0

libraryA를 썼습니다. 정적 라이브러리를 연결할 때 중복 된 외부 상수

//classA.h 
extern NSString *const ConstantString; 

//classA.m 
NSString *const ConstantString = @"aaa"; 

내가 또한 libraryA.a이 libraryB의 추가
//classB.m 
#import <libraryA/classA.h> 

libraryB

작성 -> 빌드 단계 -> 라이브러리와 링크 바이너리.

그런 다음 내 주요 프로젝트에, 나는를 ClassA와 ClassB가 together.So를 가져올 필요가 나는 주요 프로젝트에 libraryB.a 모두 libraryA.a 추가 -> 빌드 단계 -> 라이브러리와 링크 바이너리.

링크 할 때 문제가 발생합니다. ConstantString의 중복 심볼이 표시됩니다.

그래서 어떻게 수정합니까?

+0

정적 라이브러리에서는이 작업을 수행 할 수 없습니다. LibraryB에 전체 LibraryA를 포함시킨 다음 LibraryB를 다른 프로젝트에 연결하십시오. 그러나 이들을 분리하는 것이 좋습니다. LibraryA에 프로젝트에 직접 노출 된 내용이 없으면 가능한 한 더 낮게 만듭니다. –

답변

0

맨 처음 Jason의 의견을 보내 주셔서 감사합니다. 제 동료들과 토론 한 후 올바른 해결책을 찾은 것 같습니다. libraryB는 컴파일 한 후에 libraryA에 링크하지 말아야합니다. 링크는 주 프로젝트를 컴파일 한 후에 수행해야합니다. libraryA에서 libraryA -> 빌드 단계 -> 라이브러리와 함께 바이너리 링크를 제거했습니다. 오류는 다시 표시되지 않습니다.