2017-04-11 4 views
10

2 개의 아키텍처 슬라이스 (armv7, arm64)가있는 고정 정적 라이브러리가 있습니다. 나는 그것을 신속하게 작동시키고 코코아 터치 프레임 워크로 포장하려고 노력 중이다.코코아 터치 프레임 워크에서 정적 라이브러리 래핑

내가 무엇을 :

  1. 코코아 터치 프레임 워크 프로젝트를 헤더 정적 라이브러리로 .a
  2. 드래그 만들기
  3. 설정 OTHER_LDFLAGS
  4. 설정 ONLY_ACTIVE_ARCH
  5. NOVALID_ARCHSARCHS을 설정 -all_loadarmv7arm64
  6. 릴리스 빌드 구성 DerivedData /../../ 제품에서
  7. 잡아 .framework 파일/내 신속한 프로젝트에이 .framework를 넣어

에 포함 된 바이너리 섹션에 추가 빌드 내 일반 설정을 대상으로하고 프레임 워크를 가져 와서 클래스 중 하나를 사용하면 undefined symbols for architecture arm64 또는 undefined symbols for architecture armv7이 표시됩니다.

편집 :
정적 라이브러리의 크기는 약 34MB이지만 생성 된 .framework의 크기는 약 12MB입니다.

편집 2 :
정적 라이브러리와 생성 된 동적 라이브러리 모두에서 nm -arch arm64 -g myLibraryName을 실행했습니다. 동적 라이브러리에는 정적 라이브러리에있는 모든 기호가 들어 있지 않습니다. XCode 빌드 프로세스가 많은 것을 제거하는 것처럼 보입니다. (libz.dylib 또는 libz.tbd : 추가 +를 :>링크 바이너리와 라이브러리 - ->대상 ->빌드 페이즈

프로젝트을 :

+0

프레임 워크에 라이브러리를 배포 하시겠습니까? 프레임 워크에서 라이브러리를 사용하고 싶습니까? 아니면 프레임 워크를 포함하는 응용 프로그램에 라이브러리를 표시하려고합니까? 마지막으로 정적 라이브러리에'.dylib '버전이 있습니까? – tdbit

+0

@tdbit 신속하게 사용할 수 있기 때문에 Cocoa Touch Framework에 정적 라이브러리를 래핑하려고합니다. 아시다시피, swift는 정적 라이브러리를 지원하지 않습니다. 아니요, .dylib는 사용할 수 없습니다. – tailec

+0

라이브러리를 올바르게 작성하고 있는지 확인하십시오. 동적 프레임 워크를 만드는 적절한 방법에 대한 링크를 확인하십시오. > https://www.insert.io/frameworkios8xcode6/ > https : // possiblemobile.co.kr/2016/08/ios-frameworks-part-2-build-and-ship/ – pdubal

답변

3

난 당신도 추가 잊어 버린 생각 Xcode 7부터 *.dylib 파일은 now *.tbd 개 파일입니다.

(210)

P.S : 당신이 원하는 경우에 당신은 또한 인수 -lz를 추가하여 빌드 설정libz.tbd에서 "기타 링커 플래그"를 추가 할 수 있어야합니다.

+0

감사하지만 작동하지 않습니다. 문제는 링커가 생성 된 동적 라이브러리에 모든 심볼을 추가하지 않는다고 생각합니다. 방금 nm 명령으로 확인했습니다. 내 설정은'디버그 심볼 디버깅 심볼''''''''''''''''''''''''''''''''디버그 심볼 드루 잉 복사''예' 'Dead code stripping '을'No'로 설정하려했지만 프레임 워크가 컴파일되지 않았습니다. – tailec

+0

Btw, 정적 라이브러리는 오래된 webrtc가 C++ 코드의 일부 사용자 정의 변경으로 인해 빌드되면 도움이됩니다. 그러나이 정적 라이브러리는 오래된 Obj-C 프로젝트에서 잘 작동합니다. – tailec

+0

매우 이상하게, 어쩌면 당신은 그것을 알고있을 것입니다, 공식 webrtc/ios [link] (https://webrtc.org/native-code/ios/)가 유용 할 수 있다면, 특히 설정 부분을 살펴보십시오. –