【问题标题】:Undefined symbols for architecture i386: "_OBJC_CLASS_$_ZipException", referenced from: error架构 i386 的未定义符号:“_OBJC_CLASS_$_ZipException”,引用自:错误
【发布时间】:2012-12-18 22:05:31
【问题描述】:

我在我的项目中使用了一些“.o”文件,并且在编译时显示以下错误,

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

我已经在下面发布了错误日志

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)

一开始报错​​比较多,通过导入libs.dylib框架解决,

但仍然存在 2 个错误。

编辑:我已经解决了热门问题Undefined symbols for architecture i386: _OBJC_CLASS_$_SKPSMTPMessage", referenced from: error,但该解决方案对我不起作用

有人知道我哪里出错了吗?这是 xcode 的问题,是否缺少库或链接失败?

提前致谢

【问题讨论】:

  • use -v to see invocation - 这样做。然后向我们展示结果。
  • 您可以将其添加到链接器标志中(如果您使用 Xcode,请转到构建阶段,会有一些地方可以插入其他链接器选项)。
  • 我们能看到一些代码吗 - 错误是使用了一个 Objective C 类,如果你按照标题和问题编写 C 类,这是不可能的

标签: ios objective-c xcode cocoa-touch xcode4.5


【解决方案1】:

错误消息指出未定义的符号被ZipFile.oZipReadStream.oZipWriteStream.o 引用。这意味着您正在尝试在您的应用中使用 Objective-Zip 库。

未定义的符号是_OBJC_CLASS_$_ZipException。编译器在源文件中看到@implemention ZipException 指令时会生成此符号。

Objective-Zip 库包含一个名为 ZipException.m 的文件,其中包含 @implementation ZipException 指令。

最可能的解释是您根本没有在目标中包含ZipException.m。检查您是否已这样做。如果您不知道如何,请查看this answer

另一种可能的解释是您修改了ZipException.m 文件,这可能是意外的,以删除@implementation ZipException 指令或将其隐藏在编译器中的方式。检查您是否没有修改该文件,并且它包含@implementation ZipException 指令。

【讨论】:

  • 但是我没有.m 文件,它是一个库!我该怎么办?
  • 我缺少实现
  • 谢谢! “OBJC_CLASS_$”之后的类名是造成问题的原因。
  • 奇怪的是,当取消选中并重新选中“丢失”.m 文件的“目标成员资格”复选框时,我的这种性质的问题得到了解决。 Xcode 中的一些东西只是香蕉,它没有在构建中包含该文件,即使它显示为选中 :)
  • 当我替换一个 NSManagedObject 子类时,xcode 毫不客气地丢弃了我的 2 个目标(!)这也帮助触发了我的答案,非常感谢!
【解决方案2】:

我提供的解决方案听起来很奇怪,我花了一段时间才真正尝试它,但它对我有用。这仅在您修复了所有框架链接问题时才有效。对我来说就是这种情况,但我仍然遇到一些 Mach-O 错误。

我所做的是从链接的框架和库中删除所有库(在常规选项卡 iOSTarget 中),然后通过将它们从左窗格拖到链接的框架和库空间中将它们添加回来。

【讨论】:

    猜你喜欢
    • 2013-03-23
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多