Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 架构armv7的未定义符号_Ios_Armv7 - Fatal编程技术网

Ios 架构armv7的未定义符号

Ios 架构armv7的未定义符号,ios,armv7,Ios,Armv7,这个问题快把我逼疯了,我不知道怎么解决它 Undefined symbols for architecture armv7: "_deflateEnd", referenced from: -[ASIDataCompressor closeStream] in ASIDataCompressor.o "_OBJC_CLASS_$_ASIDataDecompressor", referenced from: objc-class-ref in ASIHTTP

这个问题快把我逼疯了,我不知道怎么解决它

    Undefined symbols for architecture armv7:
  "_deflateEnd", referenced from:
      -[ASIDataCompressor closeStream] in ASIDataCompressor.o
  "_OBJC_CLASS_$_ASIDataDecompressor", referenced from:
      objc-class-ref in ASIHTTPRequest.o
  "_deflate", referenced from:
      -[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
  "_deflateInit2_", referenced from:
      -[ASIDataCompressor setupStream] in ASIDataCompressor.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1
我认为这与:

ld: symbol(s) not found for architecture armv7
但我补充了一句:
libz.1.2.3.dylib
这没用,有人有什么想法吗?

常见原因 “架构armv7的未定义符号”的常见原因是:

  • 导入标题,但未链接到正确的库。这是很常见的,尤其是对于像QuartzCore这样的库的头,因为默认情况下它不包括在项目中。解决:

    • 构建阶段的
      链接二进制文件与库
      部分添加正确的库

    • 如果要在默认搜索路径之外添加库,可以在生成设置中的
      库搜索路径
      值中包含该路径,并添加
      -l{library\u name\u,不带{lib\u和{u后缀}
      (例如,对于libz.a使用
      -lz
      )到
      生成设置的
      其他链接器标志部分

  • 将文件复制到项目中,但忘记检查要将文件添加到的目标。解决:

    • 打开
      构建阶段
      以获得正确的目标,展开
      编译源代码
      并添加缺少的
      .m
      文件。如果这是你的问题,也请投票。

  • 包括一个静态库,该库是为另一个体系结构(如主机上的模拟器i386)构建的。解决:

    • 如果您有多个库供应商提供的库文件要包含在项目中,则需要包含一个用于模拟器(i386)和一个用于设备(例如armv7)的库文件

    • 或者,您可以创建包含这两种体系结构的



  • 原始答复: 您尚未链接到正确的libz文件。如果右键单击该文件并在finder中显示,则其路径应位于iOS sdk文件夹中的某个位置。这是我的例子

    /开发者/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib


    我建议删除该引用,然后将其重新添加到目标的“使用库链接二进制文件”部分“构建阶段”。

    如果您正在处理iOS5升级,我发现要编译一个写入目标4.3的项目,我可以将项目导航器中的libz.1.2.3.dynlib重命名为libz.1.2.5.dynlib并编译它


    我的iPhoneOS50SDK/usr/lib文件夹没有libz.1.2.3.dynlib——不知道这是测试版还是自然升级。

    通常有一个别名没有链接到当前版本的版本标识符,在这种情况下libz.dylib链接到libz.1.2.5.dylib。使用基本别名而不是版本化别名。

    我有一个类似的问题,我必须在每个项目配置(调试、发布和部署)和目标的构建设置中检查“仅构建活动体系结构”。

    我昨晚有一个类似的问题,这与我在Xcode中将一个类从Finder拖到我的项目有关


    解决方案是转到Build Phases选项卡,然后是Compile Sources,并确保将类拖到列表中。

    下面是我如何解决此问题的:

    我从另一个项目中添加了a.h、.m和NIB,方法是将它们拖到我的项目导航器上。Xcode没有正确地将它们添加到构建阶段


    检查,因为我有一个类似的问题,我可以通过执行一些步骤来解决。

    我有一个类似的问题。在_OBJC_class$u之后的类名实际上是我的类。原因是我在将源代码文件拖到导航列表中时没有勾选“添加到目标”

    我的解决办法是:

  • 从导航列表中删除该类并选择“仅删除引用”

  • 再次拖动源代码文件,并确保勾选了“添加到目标”的复选框。勾选框位于“需要时复制”和“创建组”下方


  • 转到您的项目,单击构建阶段,编译源代码,将GameCenterManager.m添加到列表中。

    我在这里找不到此建议,因此它如下所示:
    如果您的项目有多个目标(即一个用于OSX,一个用于iOS),则必须链接每个目标的相关库。。例如,我需要一个音频工具箱。。我必须为OSX和iOS分别添加一次(在frameworks文件夹下,每个目标都必须有一个库的副本。如果你只看到一个,那就是一个红旗)

    在target->Build Settings->Apple LLVM compiler language下:
    将“C++语言方言”和“C++标准库”设置为编译器默认值有助于解决此问题

    您的目标可能缺少某些类。这通常发生在重命名/删除/向项目中添加新类文件时。要修复此问题,请将新添加的类添加到某些目标

    在项目导航器(右侧栏)中选择类,打开实用程序侧栏(右侧栏),从实用程序中选择文件检查器(类似文件的图标),在目标成员资格选项卡下勾选目标。这一切都是为了避免“删除引用”并通过勾选“添加到目标”技巧再次添加


    因此:选择类->实用程序(文件检查器)->目标成员身份->勾选你想要的目标。

    最后我找到了答案,我通过向目标添加缺少的框架->构建阶段->将二进制文件链接到库来解决这个问题。

    我曾经遇到过这个问题。我意识到在移动一个类时,我用目标文件夹中的
    .h
    文件覆盖了
    .mm
    文件

    修复该问题修复了错误

    另一个可能导致“u”的原因
    iOSProject
      + iOSAPI.framework
          + iOSAPI
      + iOSAPI.xcodeproj
    
    -force_load iOSAPI.framework/iOSAPI
    
    -force_load iOSAPI.framework/iOSAPI
    -force_load another.framework/another
    
    file const kFooKey = @"Foo";