My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 4: Compile ziparchive on a static library in an iPhone project
3 people starred this issue and may be notified of changes. Back to list
Status:  New
Owner:  ----


Sign in to add a comment
 
Reported by hazmat82@gmail.com, Mar 1, 2010
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!


ziparchive_static.zip
44.3 KB   Download
Jun 11, 2010
#1 hannesk....@gmail.com
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?
Jun 11, 2010
#3 hazmat82@gmail.com
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
Oct 5, 2010
#4 kayyali....@gmail.com
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

Oct 7, 2010
#5 kayyali....@gmail.com
the previous issue is solved, the problem was i had to include Framework "libz.dylib" 

Thanks for the effort
Oct 7, 2010
#6 hazmat82@gmail.com
Good to know you solved the problem!
Oct 27, 2010
#7 kayyali....@gmail.com
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/
Oct 27, 2010
#8 hazmat82@gmail.com
Never tried to compile a static library from the terminal, as I use Xcode for development. Sorry!
Nov 1, 2010
#9 kayyali....@gmail.com
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 
Nov 1, 2010
#10 hazmat82@gmail.com
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.
Sign in to add a comment

Powered by Google Project Hosting