2013-10-26 3 views
0

하나의 응용 프로그램을 만들고 있습니다. 하나의 타사 라이브러리를 추가합니다. 그리고 하나의 정적 라이브러리를 만들었습니다. 이제는 내 라이브러리를 포함시키고 싶습니다. 제 3 자 라이브러리를 컴파일하면 내 응용 프로그램에 추가하기 전에 둘 다 단일 .a 파일 만 만들거나 내 라이브러리 .a 파일을 다른 샘플 응용 프로그램의 .a 파일에 제 3 자와 함께 포함시켜야합니다. 또한 단일 .a 파일을 만드는 경우 .h 파일은 제 3 자 라이브러리 .h 파일 또는 내 라이브러리 .h 파일을 포함해야합니다.하나의 정적 라이브러리 .a 파일을 다른 정적 라이브러리에 추가하는 방법

+0

제 3 자 라이브러리를 컴파일 할 때 라이브러리를 추가 할 때 .a 파일 하나만 생성됩니다. 그리고 제 3 자 라이브러리를 추가하면이 컴파일 된 라이브러리 .a 파일 또는 라이브러리 .a 파일. – venkat

답변

1

정적 라이브러리는 서로 묻지 않습니다.

정적 라이브러리는 개체 단위의 모음으로 각 개체는 컴파일 단위 (예 : .m 파일)에 해당합니다.

실제로 두 개의 정적 라이브러리를 분해하여 모든 구성 요소 객체 파일을 추출한 다음 새 정적 라이브러리에서 다시 어셈블 할 수 있지만 컴파일러가 정상적으로 수행하는 것은 아닙니다.

그래서 두 번째 정적 라이브러리 lib2.a에 의존하는 정적 라이브러리 lib1.a가 있다고 가정 해보십시오. 두 라이브러리를 main 기능으로 연결하여 실행 파일을 만듭니다. 두 라이브러리를 수동으로 "병합"하지 않으면 lib1.a를 사용할 때마다 lib2.a를 링크해야합니다.

이것은 Xcode에서 매우 쉽게 확인할 수 있습니다.

헤더 파일의 경우 두 라이브러리의 헤더 파일도 포함시켜야합니다.

두 개의 정적 라이브러리를 병합하여 두 가지의 개체 파일이 포함 된 새 정적 라이브러리를 만드는 방법에 대한 자세한 내용을 보려면 this 또는 this을 확인하십시오.

0

하나의 정적 라이브러리를 다른 라이브러리에 링크 할 때 결과로 결합 된 정적 라이브러리를 응용 프로그램과 링크하면됩니다. 라이브러리에 대해 공용 인터페이스를 정의하는 헤더와 응용 프로그램의 타사 라이브러리에 대한 헤더를 포함해야합니다. 라이브러리 또는 타사에서 사용하는 모든 프레임 워크는 응용 프로그램과 연결되어 있어야합니다.

관련 문제