I'm trying to use SSZipArchive objc library in my Swift iOS Project.
What I did:
- Created an Objective-C "Cocoa Touch Framework"
- Followed this guide to import SSZipArchive's objective C and C files into it.
- Changed all C headers to public as per this answer
- Change build settings to allow non-modular includes as per this answer
The framework compiles fine. I'd manage to use objective C libraries in Swift projects using this way before so I guess the steps are correct?
The problem right now is when I try do Import SSZip in my project and try to compile, it gives "Include of non-modular header inside framework module" errors for each of the C header files of SSZipArchive and I've tried all possible solutions I can find online with no success. Seems like the problem centers on zlib.h
Please help.. I'm stuck for more than a week now and I couldn't find any alternatives to unzip a file in swift.
I got this to work. You need to move all the #includes that causes problem out from its .h file and put them in its .c file instead. After that clean and recompile and the error goes away and everything works.
I have found one more solution how to leave zlib.h import inside headers files and have framework built successfully.
Download the source code of zlib from the official site: http://www.zlib.net/ I have used the link: http://zlib.net/zlib-1.2.8.tar.gz
Unzip it.
Then add zlib.h and zconf.h headers to your Framework project as well as having libz.tbd linked too.
Then set your zlib.h and zconf.h headers public (TARGETS settings -> Build Phases -> Headers)
Build the project. Everything should be OK.
My Framework works fine after that and successfully unzips files in my iOS app.
来源:https://stackoverflow.com/questions/30820144/include-of-non-modular-header-inside-framework-module-in-c-header-of-ssziparch