libz.dylib versus libz.1.2.3.dylib versus libz.1.2.5.dylib
The OS often includes many versions of dynamic libraries. These are used by different programs depending on which library they were compiled against at their compile time, but when you compile you want to link against the version that correspond to the installed headers which you are including/importing into your source code.
The libz.dylib
will be a link to the same version that your installed headers use.
Say you have 2 versions libXYZ.1.dylib
and libXYZ.2.dylib
, libXYZ.dylib
is a link to libXYZ.2.dylib
and libXYZ.1.dylib
is a legacy lib that is also available in the OS for apps compiled and distributed before libXYZ.2.dylib
was released. The libXYZ.1.dylib
has been included in the SDK because there can be old frameworks that still want to be linked against the old version.
The two versions might have very similar interfaces in the header so you won't see any real differences when you compile and run, but in future versions the older versions might get removed and new ones added which will make your project break when linking.
If I understand it right, the linker will dereference file links so it will find the right version and keep that dylib name and dynamically link against that when the app starts. So the libz.dylib
won't be the path used (more than at compile time).
I see this in my Xcode installation in the 4.3 SDK
/Developer/.../SDKs/iPhoneOS4.3.sdk/usr/include/zlib.h
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.3, July 18th, 2005
Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
libz.dylib
/Developer/.../SDKs/iPhoneOS4.3.sdk/usr/lib/libz.dylib -> libz.1.2.3.dylib
adding libz.1.2.3.dylib vs libz.1.1.3.dylib or libz.1.2.5.dylib
In using dynamic libraries the one you normally use is libX.major_version.dylib in this case libz.1.2.dylib. This is a link to a library libX.major_version.minor_version.dylib which here is libz.1.2.5.dylib
The rationale for this is that the major version is changed only when the API is changed, the minor version is updated when any change is made. Thus your program should work when it uses any of the same major version and so you want the latest version.
In this case the tutorial had an older install and so its libz.1.2.dylib. should have pointed to libz.1.2.3.dylib.
For you you should use libz.1.2.5.dylib which should be like the tutorials version but with bug fixes and possibly extra functions that don't matter here as the tutorial won't call the new functions.
Normally libX.1.x.dylib would be older than libX.2.y.dylib but the writers might produce bug fixes to the old API whilst also working on the new API
Following on from the rational I gave libz.dylib should be a link to the highest number library but I would not use it as you are writing to a particular API so I would use a version specific (In this case if missing a link the I would not trust what libz.dylib points to)
Xcode 4.2 link error: libz issue?
Link against the libz.dylib
, but add it through the Build Phases tab.
Project >> Target >> Build Phases >> Link Binary With Libraries
Press + under the list and select the libz.dylib
then it will add the lib so it will work inbetween SDK updates.
How can i add libz.1.2.3.dylib to iOS 9.1 in Xcode 7?
For your information from Xcode 7
libz.1.2.3.dylib
and all .dylib
Framework change into .tbd
Framework. And That's also not effect to old version Xcode version
Unzip files using libz.dylib
you can do like this way:-
i found one greate answer in stack overflow below from this link download and unzip file in iOS please check below
I've used ZipArchive with success in the past. It's pretty ligthweight and simple to use, supports password protection, multiple files inside a ZIP, as well as compress & decompress.
The basic usage is:
NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ZipFileName" ofType:@"zip"];
ZipArchive *zipArchive = [[ZipArchive alloc] init];
[zipArchive UnzipOpenFile:filepath Password:@"xxxxxx"];
[zipArchive UnzipFileTo:{pathToDirectory} overWrite:YES];
[zipArchive UnzipCloseFile];
[zipArchive release];
more examples about this package here
I have also tried SSZipArchive in some projects.
Below line would unzip your zip file.
[SSZipArchive unzipFileAtPath:path toDestination:destination];
please also check the example hope its helps you :)
Edit
please visit this :-
libz.dylib versus libz.1.2.3.dylib versus libz.1.2.5.dylib
epub file error in objective c
The logs seem to indicate that the problem is coming from the libz.1.2.3.dylib framework.
What iOS SDK are you using (and which Xcode version) ?
In your project, click on your target and go to the Build Phases tab, then "Link binary with libraries" section.
Try removing the libz.1.2.3 framework and then re-adding the libz.1.2.5 (click on the little "+" at the bottom of the window and select libz.1.2.5 from the list).
EDIT:
As stated by Abizern in below comment, adding libz.dylib instead of libz.1.2.5.dylib should do the trick. This should link to the latest version of the lib (see this question and answers here).
Related Topics
Pinch to Zoom Effect on Uiimageview Inside Scrollview
Custom Font on Uibutton Title Clipped on Top of Word
Apple Watch - Only Getting Data If App on Phone Is Active
Custom Scenekit Geometry in Swift on iOS Not Working But Equivalent Objective C Code Does
Objective-C Rabbitmq Client Not Publishing Messages to Queue
Fontawesome Pro and Xamarin.iOS Only One Font Can Be Active
iOS Nsnotificationcenter to Check Whether the App Came from Background to Foreground
How to Convert Video (In Gallery) to Nsdata? in Swift
Changes to Swiftui Fetchrequest Not Triggering View Refresh
Adding Swift Files to Test Target Not Fixing Unit Tests
Uploads Using Backgroundsessionconfiguration and Nsurlsessionuploadtask Cause App to Crash
Font Size on Universal Storyboard
Usage of String.Range in Swift 3.0
Pdfkitten Is Highlighting on Wrong Position