首页 > 解决方案 > IBM MobileFirst 7.0 - libstdc++.6.dylib 上的 Xcode 10.1/iOS 12 问题

问题描述

我们在移动应用程序开发中使用 MFP 7.0。在 Xcode 9 上,我们没有任何问题,我们所有的应用程序都运行顺利。当 Xcode 10 和 iOS 12 发布时,我们升级了 MacBook,但在编译过程中遇到了问题。我们已按照论坛的建议添加了库libstdc++.6.dylib。当我们在模拟器上运行时它工作正常,但如果我们尝试在真实设备(iPhone/iPad)中进行测试,我们会收到错误消息“ ../native/Frameworks/libstdc++.6.dylib, missing required architecture arm64”

当我运行针对我的 iphone 设备的应用程序时,这是我的 xcode 中的实际警告/错误日志:

ld:警告:忽略文件 /Users/jm/Documents/App/native/Frameworks/libstdc++.6.dylib,缺少文件 /Users/jm/Documents/App/native/Frameworks/libstdc++.6.dylib 中所需的架构 arm64( 2 片)架构 arm64 的未定义符号:“std::basic_ostringstream, std::allocator >::basic_ostringstream(std::_Ios_Openmode)”,引用自:+[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber- UCUtils.o) "std::ostream::operator<<(double)",引用自:+[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber-UCUtils.o) "std::string::c_str () const",引用自: +[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber-UCUtils.o) "std::basic_string, std::allocator >::~basic_string()",引用自:+[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber-UCUtils.o) "std::basic_ostringstream, std::allocator >::str() const",引用自: +[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber-UCUtils.o) "std::basic_ostringstream, std::allocator >::~basic_ostringstream()",引用自:+[NSNumber(UCUtils) doubleToString :] 在 libWorklightStaticLibProject.a(NSNumber-UCUtils.o) ld: 未找到架构 arm64 的符号 clang: 错误: 链接器命令失败,退出代码为 1(使用 -v 查看调用)str() const",引用自:+[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber-UCUtils.o) "std::basic_ostringstream, std::allocator >::~basic_ostringstream()",引用自: +[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber-UCUtils.o) ld: 未找到架构 arm64 的符号 clang: 错误: 链接器命令失败,退出代码为 1(使用 -v 查看调用)str() const",引用自:+[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber-UCUtils.o) "std::basic_ostringstream, std::allocator >::~basic_ostringstream()",引用自: +[NSNumber(UCUtils) doubleToString:] in libWorklightStaticLibProject.a(NSNumber-UCUtils.o) ld: 未找到架构 arm64 的符号 clang: 错误: 链接器命令失败,退出代码为 1(使用 -v 查看调用)链接器命令失败,退出代码为 1(使用 -v 查看调用)链接器命令失败,退出代码为 1(使用 -v 查看调用)

:-1: 忽略文件 /Users/jm/Documents/App/native/Frameworks/libstdc++.6.dylib,缺少文件 /Users/jm/Documents/App/native/Frameworks/libstdc++.6.dylib 中所需的架构 arm64( 2片)

:-1: 未找到架构 arm64 的符号

:-1: 链接器命令失败,退出代码为 1(使用 -v 查看调用)

标签: iosxcodeibm-mobilefirst

解决方案


我尝试在 MFP v6.2 上进行跟踪,它在设备上运行良好。你可以试试同样的。您能否从复制 stdlibc++ 库的位置提供更多详细信息。

  1. 从您的 Xcode 9 机器

复制文件: (libstdc++.6.0.9.tbd) 和 (libstdc++.6.tbd) /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib 和/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib

  1. 粘贴到 Xcode 10 机器上的以下路径

将文件: (libstdc++.6.0.9.tbd) 和 (libstdc++.6.tbd) 复制到: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib

(请注意区分“iPhoneOS”和“iPhoneSimulator”)

  1. 将复制的库 (libstdc++.6.0.9.tbd) 和 (libstdc++.6.tbd) 添加到 Xcode 项目的“Build Phase-> Link library”路径。

  2. 清理xcode并重建它。

  3. 在 iOS 12 设备上执行

注意:对于模拟器问题/usr/lib/libstdc++.6.dylib: mach-o, but not built for iOS simulator,可以尝试将原始文件:libstdc++.6.0.9.dylib 和 libstdc++.6.dylib 和 libstdc++.dylib 复制到:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib

但有时连做都不行,建议在iOS 11模拟器上运行


推荐阅读