2009-03-08 6 views
7

저는 iPhone 용 정적 라이브러리를 작성 중이며 내가하고있는 일이 권장되는지 아니면 다른 접근 방식을 취해야하는지 궁금합니다.iPhone/CocoaTouch 용 라이브러리에서 라이브러리에 연결하는 적절한 방법

내가 쓰고있는 정적 라이브러리는 libxml2에 의존합니다. libxml2에는 동적 라이브러리 (dylib)와 정적 라이브러리 (a)가 있습니다. 나는 두 가지 접근법을 시도했다.

접근 한 - 나는 "-lxml2"에서 "다른 링커 플래그"빌드는 다음과 같은 메시지와 함께 실패 추가하여 정적 라이브러리에 링크 할 때 :

/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/libtool: file: -lxml2 is not an object file (not allowed in a library) 

접근 두 - 나는 성공적으로 연결할 수 있습니다 내 정적 라이브러리에서 동적 라이브러리에 대해하지만 이것이 허용되는지 (또는 적절한 접근 방식) 아이폰에 잘 모르겠습니다. 정적 라이브러리를 구축하고 있지만, 애플은 동적 라이브러리에 링크 된 정적 라이브러리를 허용합니까? 저는 여전히 정적 라이브러리에 대해 배우고 있습니다 만, 내 이해에서 dylib의 코드는 내 코드와 결합하여 하나의 라이브러리를 만들 것이므로 dylib에 연결하면 문제가되지 않습니다.

은 요약하면 : [? 구축, 그러나 이것은 정확하고 허용]

  • mylibrary.a - -> libxml2.a [작동하지 않음]
  • mylibrary.a> libxml2.dylib

답변

-8

Apple에서는 SDK와 함께 제공되는 것 이외의 프레임 워크 및/또는 라이브러리를 링크 할 수 없습니다.

마르코

+1

실제로 XCode를 사용하면이 정도면 충분합니다. 초록에서 더 많이, StackOverflow는 * 정확한 * 답을 쉽고 빠르게 찾을 수있는 장소 여야합니다! 모르는 경우 또는 확실하지 않은 경우 답변으로 게시하지 마십시오. 댓글에서 명확한 질문을하거나 올바른 답을 알기 전까지는 약간의 연구를하십시오! :) – Olie

8

libxml2.dylib는 SDK에서 사용할 수 있습니다. 바로 방법은 목록에서 두 번 클릭하여 엑스 코드에 다음 "링크 라이브러리 '에서 +을 클릭 일반 아래 대상 노드/응용 프로그램을 ... 당신이 찾아야한다 libxml2.dylib이다.

0:42이 Screencast에서 CoreGraphics가 프로젝트에 추가 된 방법을 확인할 수 있습니다.

+0

오른쪽. * 연결 방법 *을 이해합니다. 내 질문은 정적 라이브러리에서 외부 라이브러리에 연결하기위한 적절한 표준인가? 당신은 좋은 점을 보았습니다. 나는 간과 해 버렸습니다. libxml2.dylib는 SDK와 함께 배포되므로 허용 될 수 있습니다. – Caged

+1

SDK에서 제공하는 dylib의 정적 라이브러리와 링크하지 않는 것이 좋습니다. 그들은 다른 프레임 워크에서 사용할 수 있으며 버전 문제가 발생할 수 있습니다. 즉, Foundation.framework가 libxml2를 가져옵니다. – epatel

0

정적 라이브러리를 다른 정적 라이브러리에 정적으로 연결할 수 없습니다. 이것이 다른 정적 라이브러리에 의존하는 프레임 워크와 라이브러리가 소비자에게 링크 바이너리가있는 라이브러리 빌드 단계 또는 기타 링커 플래그 빌드 설정에 수동으로 추가하도록 요구하는 이유입니다.