【问题标题】:AFNetworking won't compileAFNetworking 无法编译
【发布时间】:2015-06-07 16:23:54
【问题描述】:

我完全无法使用 AFNetworking 在模拟器上运行项目。我以前在其他项目上使用过这种依赖关系,所以我不明白这里出了什么问题。一、我尝试运行项目时的错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_AFHTTPSessionManager", referenced from:
      _OBJC_CLASS_$_SharedNetworkObject in SharedNetworkObject.o
  "_OBJC_CLASS_$_AFJSONResponseSerializer", referenced from:
      objc-class-ref in SharedNetworkObject.o
  "_OBJC_METACLASS_$_AFHTTPSessionManager", referenced from:
      _OBJC_METACLASS_$_SharedNetworkObject in SharedNetworkObject.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我确定这是问题的一部分,但我不知道如何解决:

这是有问题的 .h 文件:

#import <Foundation/Foundation.h>
#import <AFNetworking/AFNetworking.h>
#import "SharedSessionKey.h"

@interface SharedNetworkObject : AFHTTPSessionManager

+ (SharedNetworkObject *) sharedNetworkObject;   // class method to return the singleton object

@end

可能有趣的是,当我开始输入 AFNetworking 的导入行时,该行会在几个字符后填充,所以我知道存在 AFNetworking 依赖项。

我使用 CocoaPods 安装了依赖项。这是我的 Podfile:

# Uncomment this line to define a global platform for your project
platform :ios, '8.0'

source 'https://github.com/CocoaPods/Specs.git'

target 'WeRun' do
pod "AFNetworking", "2.5.2"
end

target 'WeRunTests' do

end

当然,我在.xcworkspace(不是.xcodeproj)工作。

还有一点,我的 xcconfig 文件看起来像这样,与其他成功的 AFNetworking 构建相匹配:

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking"
OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/AFNetworking"
OTHER_LDFLAGS = -ObjC -l"Pods-MyApp-AFNetworking" -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration"
OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)
PODS_ROOT = ${SRCROOT}/Pods

我不知道还要寻找什么。我已经完全删除了 pod 并重新安装,却发现完全相同的错误。谁能帮我解决这个问题?谢谢!

【问题讨论】:

  • 将仅构建活动架构设置为是
  • @Jassi - 没用。
  • 请查看link 其他用户正在尝试各种选项。它可能会对你有所帮助。
  • @KlevisonMatias - 谢谢。我已经尝试过这些,但它们只会让问题变得更糟。

标签: ios xcode afnetworking cocoapods


【解决方案1】:

不要在 pod 文件中给出 AFNetworking 之后的版本。然后再试一次。确保你也删除了逗号。

【讨论】:

  • 我的 Podfile 中没有版本号。还是不行。
【解决方案2】:

好吧,我解决了这个问题,但我不确定它为什么会起作用。我正在尝试构建设置中的其他链接器标志。我删除了 CocoaPods 安装(大概)放置在那里的标志,并通过从 .xcconfig 文件中复制标志来替换它。具体来说,我在-ObjC 之后添加了这个文本:-l"Pods-WeRun-AFNetworking" 作为第二个标志。在我看来,这正是我刚刚删除的内容,所以我真的很犹豫是否建议将此作为“答案”,但它现在有效,所以一定有所改变。

如果有人能对此有所了解或告诉我我在自欺欺人,请告诉我。感谢您的建议。

【讨论】:

    【解决方案3】:

    我建议您将 $(inherited) 标志添加到“构建设置”中。

    • 点击蓝色项目图标
    • 选择“构建设置”标签
    • 在“链接”下,您会找到一个名为“其他链接器标志”的设置
    • 将 $(inherited) 添加到文本字段中

    【讨论】:

      【解决方案4】:

      一个简单的方法。下载存储库文件。拖放 AFnetworking 文件夹的内容(如有必要,您可以创建组),然后使用该库。 (使用#import "AFnetworking.h")

      【讨论】:

        【解决方案5】:

        我花了几个小时来解决这个完全相同的问题,浏览了我能找到的所有 Google 点击。为设备构建工作正常,但为模拟器构建工作却没有。

        以下是最终为我解决问题的步骤:

        1. 清除 XCode 缓存:

          rm -rf ~/Library/Developer/Xcode/DerivedData/
          
        2. 清除 CocoaPods 缓存并重新安装依赖项:

          rm -rf "${HOME}/Library/Caches/CocoaPods"
          rm -rf "`pwd`/Pods/"
          pod update
          
        3. 最后进入“Pods”项目并将Build Active Architectures Only设置为No,同样用于“Debug”配置。

        【讨论】:

        • 非常有帮助。谢谢。
        • 它有效,谢谢!这应该是正确的答案。
        • 终于找到了一个可行的解决方案!!非常感谢(Y):D
        • 谢谢!这救了我的**:D
        • 你是男人中的神。 OUT OF NOWHERE 在编程会话的中间,我的项目开始抛出这些错误,这修复了它。
        【解决方案6】:

        我遇到了同样的问题,当时我已经在 Other linker flags 上设置了 -lc++ 以用于 cpp 库。
        我在Other linker flags 上添加了这两个标志-ObjC -l"AFNetworking",它们工作并成功编译。这是-ObjC-l"AFNetworking" 的两个标志。您同时扫描添加-ObjC -l"AFNetworking"

        【讨论】:

          猜你喜欢
          • 2012-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-25
          • 2013-03-06
          • 2016-08-24
          • 2018-10-18
          相关资源
          最近更新 更多