X-code 报错dyld: Symbol not found: _NSURLSessionTransferSizeUnknown

本文介绍如何解决在iOS 6.0系统上使用AFNetworking 2.0时遇到的NSURLSessionTransferSizeUnknown符号未找到的问题。提供了解决方案,包括修改CocoaPods配置或将__IPHONE_OS_VERSION_MAX_ALLOWED设置为限制7.0以下版本使用session方法。
      今天在iPhone4  6.0系统上运行项目 报错

dyld: Symbol not found: _NSURLSessionTransferSizeUnknown.

使用AFN2.0之前就已经知道6.0不支持session.所以根本没有使用session的方便,怎么还会报错.其实AFN2.0就是算你没有使用session的方法,也已经关联了session部分的文件.所以如果你使用了CocoaPods,只需要在CocoaPods里面将平台改为6.0就好了.

如果你咩有使用CocoaPods,好像使用__IPHONE_OS_VERSION_MAX_ALLOWED 来限制7.0以下项目禁止使用session方法.具体我没有看太明白.如果大家知道可以分享一下.可以参考网址:

点击打开链接     http://stackoverflow.com/questions/19041584/does-afnetworking-2-0-support-ios-6-0/19041901#19041901


点击打开链接     https://github.com/AFNetworking/AFNetworking/pull/1412

在 macOS 上运行 `mongod` 时出现 `dyld: Symbol not found: __ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4openEPKcj` 错误,通常表明 MongoDB 可执行文件依赖的 C++ 标准库符号缺失或版本不兼容。此类问题常见于不同编译器、C++ 标准库(如 libc++ 或 libstdc++)混用,或者系统环境与构建 MongoDB 时所使用的开发工具链存在差异[^1]。 ### 问题原因分析 该错误信息中提到的符号 `_ZNSt3__113basic_filebufIcNS_11char_traitsIcEEE4openEPKcj` 是 C++ STL 中 `std::basic_filebuf<char>::open(const char*, unsigned int)` 方法的 mangled 名称,属于 libc++ 的一部分。macOS 自 Xcode 4.3 起默认使用 Clang 和 libc++ 作为 C++ 编译器和标准库。若 MongoDB 构建时链接的是特定版本的 libc++,而运行时系统中的 libc++ 版本较旧或不一致,则可能导致符号缺失错误。 此外,若 MongoDB 安装包是从第三方源或非官方渠道获取,其构建配置可能未适配当前 macOS SDK 环境,从而引发运行时链接失败问题[^1]。 ### 解决方案 #### 1. 使用 Homebrew 安装 MongoDB 推荐通过 [Homebrew](https://brew.sh/) 安装 MongoDB,因其提供的安装包已针对当前 macOS 版本进行了优化和测试,可避免多数依赖冲突。 ```bash brew tap mongodb/brew brew install mongodb-community ``` 安装完成后启动服务: ```bash brew services start mongodb/brew/mongodb-community ``` #### 2. 检查并更新命令行工具和 Xcode 确保系统中的开发工具链为最新版本,以支持正确的 libc++ 实现。 ```bash xcode-select --install sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer ``` #### 3. 手动指定动态库路径(适用于自定义构建) 如果使用了自定义构建的 MongoDB 可执行文件,可通过设置 `DYLD_LIBRARY_PATH` 强制加载兼容的 libc++.dylib 文件。 ```bash export DYLD_LIBRARY_PATH=/usr/local/lib:$DYLD_LIBRARY_PATH ``` 同时确认 `/usr/local/lib` 下包含正确版本的 libc++ 动态库,例如: ```bash ls -l /usr/local/lib/libc++.dylib ``` #### 4. 重新构建 MongoDB 并显式指定 C++ 标准库 若需自行编译 MongoDB,应在构建时明确指定使用系统自带的 libc++,并在 CMake 配置阶段加入以下参数: ```bash cmake -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++" .. ``` 这样可以确保所有目标文件均链接至统一的标准库实现,减少运行时符号解析失败的风险[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值