내 정적 라이브러리에 링크 된 앱이 있습니다.자체가 동적 라이브러리와 링크되는 정적 라이브러리와 링크하는 방법은 무엇입니까?
방금 Apple의 Reachability Code를 라이브러리에 추가했는데 이로 인해 앱 연결이 끊어졌습니다 (앱이 도달 가능성 코드를 사용하지 않거나 간접적으로 포함하더라도 Reachability.m이 포함됨). 라이브러리의 컴파일 소스 섹션).
그래서 응용 프로그램의 다른 링커 플래그에 -ObjC를 추가하여 도달 가능성에 대한 연결 오류를 해결했습니다. 그러나 라이브러리는 또한 ZipArchive를 사용 중이며 -ObjC 링커 플래그를 추가하면 링크 오류가 발생합니다.
그럼 어떻게해야합니까? -ObjC를 해제하고 Reachability는 링크하지 않으며 포함 시키며 ZipArchive는 링크하지 않습니다. 해결책이 있습니까?
샘플 ZipArchiev 링커 오류 :
Undefined symbols for architecture arm64:
"_deflate", referenced from:
_zipWriteInFileInZip in libMyLibrary.a(zip.o)
_zipCloseFileInZipRaw in libMyLibrary.a(zip.o)
샘플 도달 가능성 링커 오류 :
정적 라이브러리는 -ObjC 플래그로 구축하며 libz.1.2.5.dylib와 링크되고Undefined symbols for architecture arm64:
"_SCNetworkReachabilityGetFlags", referenced from:
-[Reachability connectionRequired] in libMyLibrary.a(Reachability.o)
-[Reachability currentReachabilityStatus] in libMyLibrary.a(Reachability.o)
실제로 처음에 게시 한 후에 찾은 해결책이 있습니다. 응용 프로그램에 -ObjC 플래그를 추가하고 libz.1.2.5.dylib와 함께 응용 프로그램을 추가 할 수 있습니다. 하지만 좋은 디커플링이 아닌 IMO - 제 정적 라이브러리는 다른 사람들의 앱에 의해 배포되고 사용 될 것입니다. libz를 사용한다는 사실은 그들에게 투명해야하며, 제 라이브러리에 이미 연결되어 있다면 그것과 연결해서는 안됩니다 . 정적 라이브러리와 libz 동적 라이브러리를 연결해야하는 응용 프로그램없이 링크 문제를 해결할 수있는 방법이 있습니까?
를 연결해야합니까? –
도달 가능성은 라이브러리가 아니며 소스 코드 (Apple에서 제공) – Gruntcakes
예 그렇지만 구현 파일이 앱 소스에 연결되어 있는지 확인해야합니다. –