Export to GitHub

ziparchive - issue #4

Compile ziparchive on a static library in an iPhone project


Posted on Mar 1, 2010 by Swift Camel

This is not an issue, just letting you know of my experience in compiling the software as a static library.

What steps will reproduce the problem? 1. Generate a static library project with Xcode 2. Include all the files of the ZipArchive Project. 3. Build the static library, everything is ok. 4. Include the static library project as a reference in another iPhone application project. 5. Build the application project.

What is the expected output? What do you see instead?

When compiling, there is a undefined reference to `__gxx_personality_v0' error. Did some research on this, and found the answer at http://www.network- theory.co.uk/docs/gccintro/gccintro_54.html. Seems that Xcode does not use g++ instead of gcc to compile the source. Don't know why everything without modifications works when trying to compile ZipArchive as a standalone project.

To compile it as a static library, all it takes is to change the extension of ZipArchive.mm from .mm to .m.

What version of the product are you using? On what operating system? Mac OS X 10.6, Xcode 3.2

I am attaching a sample Xcode project to compile ZipArchive as a static library. Thanks for this useful software!

Attachments

Comment #1

Posted on Jun 11, 2010 by Quick Kangaroo

It would be great if you describe how to add the static library in detail...

I did the following:

I downloaded your attached project I build it (with the build parameter release) I started the Finder I added the static library by Add Existing Framework -> Add Other -> choose the libziparchive.a I added the path to the header files in the target-properties "Header Search Paths" (relative Path and recursive) I cleaned the project I build the project

My Code is the follwoing:

blabla.h:

import "ZipArchive.h"

blabla.m

ZipArchive* za = [[ZipArchive alloc] init];
if( [za UnzipOpenFile:fromfile] )
{
    BOOL ret = [za UnzipFileTo:todirectory overWrite:YES];
    if( NO==ret )
    {
    }
    [za UnzipCloseFile];
}

And the error that i get while building the project is:

ld: warning: in /Users/hannessatz/Documents/DownloadFile/libziparchive.a, file was built for unsupported file format which is not the architecture being linked (i386)

".objc_class_name_ZipArchive", referenced from:

  literal-pointer@__OBJC@__cls_refs@ZipArchive in ABDownloadEPub.o

ld: symbol(s) not found

collect2: ld returned 1 exit status

Did you face such a problem already?

Comment #2

Posted on Jun 11, 2010 by Swift Camel

Comment deleted

Comment #3

Posted on Jun 11, 2010 by Swift Camel

That project is set to build a static library for iPhoneOS. If you get info on the project, you'll se that in the Build tab, the "Valid Architectures" variable is set to be "armv6 armv7". You are probably using this static library in a Mac OS X application, not an iPhoneOS one, that's why that error pops up.

Static libraries are the only way when developing for iPhone. You'll probably want to take a look on how to generate a dynamic library if you are developing an application for Mac OS X. Take a look at http://stackoverflow.com/questions/140061/when-to-use-dynamic-vs-static-libraries .

:: Edited to correct information on the build variable

Comment #4

Posted on Oct 5, 2010 by Happy Cat

Dear hazmat82,

i have spent days trying to add a static library [ziparchive_static] that you have attached into other iphone project

and i have refereed to many tutorials "how to add static library into iphone projects" but every attempt got me

the same 9 Errors wich are:

"inflateInit2", referenced from:

_unzOpenCurrentFile3 in libZIPLibraryKit.a(unzip.o)

"_deflate", referenced from:

_zipWriteInFileInZip in libZIPLibraryKit.a(zip.o)

_zipCloseFileInZipRaw in libZIPLibraryKit.a(zip.o)

"_inflateEnd", referenced from:

_unzCloseCurrentFile in libZIPLibraryKit.a(unzip.o)

"deflateInit2", referenced from:

_zipOpenNewFileInZip3 in libZIPLibraryKit.a(zip.o)

"_inflate", referenced from:

_unzReadCurrentFile in libZIPLibraryKit.a(unzip.o)

"_get_crc_table", referenced from:

_unzOpenCurrentFile3 in libZIPLibraryKit.a(unzip.o)

_zipOpenNewFileInZip3 in libZIPLibraryKit.a(zip.o)

"_deflateEnd", referenced from:

_zipCloseFileInZipRaw in libZIPLibraryKit.a(zip.o)

"_crc32", referenced from:

_unzReadCurrentFile in libZIPLibraryKit.a(unzip.o)

_unzReadCurrentFile in libZIPLibraryKit.a(unzip.o)

_zipWriteInFileInZip in libZIPLibraryKit.a(zip.o)

-[ZipArchive addFileToZip:newname:] in libZIPLibraryKit.a(ZipArchive.o)

-[ZipArchive addFileToZip:newname:] in libZIPLibraryKit.a(ZipArchive.o)

"___gxx_personality_v0", referenced from: ___gxx_personality_v0$non_lazy_ptr in libZIPLibraryKit.a(ZipArchive.o)

 (maybe you meant: ___gxx_personality_v0$non_lazy_ptr)

// end of error log

More than appreciative for the guide even if you could not help me.

regards , Ahmad

Comment #5

Posted on Oct 7, 2010 by Happy Cat

the previous issue is solved, the problem was i had to include Framework "libz.dylib"

Thanks for the effort

Comment #6

Posted on Oct 7, 2010 by Swift Camel

Good to know you solved the problem!

Comment #7

Posted on Oct 27, 2010 by Happy Cat

Dear hazmat82,

A random Question have you ever compiled static library from Terminal?

i am in a middle of project which need ZipArchive Library i have been trying to compile the library for armv6/armv7 but didn't work for me.

any guides or tips will be so much appreciated.

Links:http://www.artpol-software.com/

Comment #8

Posted on Oct 27, 2010 by Swift Camel

Never tried to compile a static library from the terminal, as I use Xcode for development. Sorry!

Comment #9

Posted on Nov 1, 2010 by Happy Cat

Dear hazmat82,

I am so grateful for the support, but i really help, i am looking for compression library support AES encryption on iPhone project, please if you have any idea where i can find such a library i am so appreciated.

Best Regards,

Ahmad kayyali

Comment #10

Posted on Nov 1, 2010 by Swift Camel

CommonCrypto library seems to support AES. Take a look at this: http://stackoverflow.com/questions/1400246/aes-encryption-for-an-nsstring-on-the-iphone

Best, F.

Status: New

Labels:
Type-Defect Priority-Medium