DD_
DD_

Reputation: 7388

Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipException", referenced from: error

I'm using a few '.o' files in my project and while compiling it shows the following error,

error:linker command failed with exit code 1 (use -v to see invocation)

I had posted the error log below

Ld /Users/deepak/Library/Developer/Xcode/DerivedData/app-bnwpvhpbrfdurbdgxucyddqyfosh/Build/Products/Debug-iphonesimulator/app.app/app normal i386
    cd /Users/deepak/Workspace/iosDevelopement/PROJECTS/KML/app
    setenv IPHONEOS_DEPLOYMENT_TARGET 4.3
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk -L/Users/deepak/Library/Developer/Xcode/DerivedData/app-bnwpvhpbrfdurbdgxucyddqyfosh/Build/Products/Debug-iphonesimulator -F/Users/deepak/Library/Developer/Xcode/DerivedData/app-bnwpvhpbrfdurbdgxucyddqyfosh/Build/Products/Debug-iphonesimulator -F/Users/deepak/Workspace/iosDevelopement/PROJECTS/KML/app -filelist /Users/deepak/Library/Developer/Xcode/DerivedData/app-bnwpvhpbrfdurbdgxucyddqyfosh/Build/Intermediates/app.build/Debug-iphonesimulator/app.build/Objects-normal/i386/app.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=4.3 -lstdc++ -licucore -lz -framework MapKit -framework CoreLocation -framework QuartzCore -framework UIKit -framework Foundation -framework CoreGraphics -framework KML -o /Users/deepak/Library/Developer/Xcode/DerivedData/app-bnwpvhpbrfdurbdgxucyddqyfosh/Build/Products/Debug-iphonesimulator/app.app/app
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_ZipException", referenced from:
      objc-class-ref in ZipFile.o
      objc-class-ref in ZipReadStream.o
      objc-class-ref in ZipWriteStream.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Initially, there were more errors and solved them by importing libs.dylib framework,

but still 2 errors persists.

EDIT: I had already gone through the popular question Undefined symbols for architecture i386: _OBJC_CLASS_$_SKPSMTPMessage", referenced from: error ,but the solution doesn't work for me

Does anyone know where I had gone wrong? I s that a problem with xcode, any missing libraries or failure in linking something?

Thanks in advance

Upvotes: 3

Views: 40629

Answers (2)

GrandSteph
GrandSteph

Reputation: 2271

The solution I am providing will sound odd and it took a while for me to actually try it but it did the trick for me. This is only valid if you fixed all framework linking issue. Which was the case for me but I was still left with few Mach-O errors.

What I did was to remove all libraries from the linked frameworks and libraries (in General tab iOSTarget) and then added them back by just dragging them from the left pane to the linked frameworks and library space.

Upvotes: 0

rob mayoff
rob mayoff

Reputation: 385540

The error message says that the undefined symbol is referenced by ZipFile.o, ZipReadStream.o, and ZipWriteStream.o. This implies that you're trying to use the Objective-Zip library in your app.

The undefined symbol is _OBJC_CLASS_$_ZipException. The compiler generates this symbol when it sees the @implemention ZipException directive in a source file.

The Objective-Zip library includes a file named ZipException.m, which contains the @implementation ZipException directive.

The most likely explanation is that you simply haven't included ZipException.m in your target. Check that you have done so. If you don't know how, look at this answer.

Another possible explanation is that you have modified the ZipException.m file, perhaps accidentally, in a way that removes the @implementation ZipException directive or hides it from the compiler. Check that you have not modified the file, and that it contains the @implementation ZipException directive.

Upvotes: 39

Related Questions