fishermain / ziparchive

Automatically exported from code.google.com/p/ziparchive
0 stars 0 forks source link

Compile ziparchive on a static library in an iPhone project #4

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
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!

Original issue reported on code.google.com by hazmat82@gmail.com on 1 Mar 2010 at 6:38

Attachments:

GoogleCodeExporter commented 8 years ago
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?

Original comment by hannesk....@gmail.com on 11 Jun 2010 at 12:04

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
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-librarie
s .

:: Edited to correct information on the build variable

Original comment by hazmat82@gmail.com on 11 Jun 2010 at 12:28

GoogleCodeExporter commented 8 years ago
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

Original comment by kayyali....@gmail.com on 5 Oct 2010 at 1:48

GoogleCodeExporter commented 8 years ago
the previous issue is solved, the problem was i had to include Framework 
"libz.dylib" 

Thanks for the effort

Original comment by kayyali....@gmail.com on 7 Oct 2010 at 1:59

GoogleCodeExporter commented 8 years ago
Good to know you solved the problem!

Original comment by hazmat82@gmail.com on 7 Oct 2010 at 5:11

GoogleCodeExporter commented 8 years ago
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/

Original comment by kayyali....@gmail.com on 27 Oct 2010 at 1:40

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

Original comment by hazmat82@gmail.com on 27 Oct 2010 at 2:45

GoogleCodeExporter commented 8 years ago
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 

Original comment by kayyali....@gmail.com on 1 Nov 2010 at 7:28

GoogleCodeExporter commented 8 years ago
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.

Original comment by hazmat82@gmail.com on 1 Nov 2010 at 10:33