【问题标题】:Code runs in simulator, dyld symbol not found error thrown when run on device (Xcode 6 beta)代码在模拟器中运行,在设备上运行时抛出 dyld symbol not found 错误(Xcode 6 beta)
【发布时间】:2014-07-28 09:02:52
【问题描述】:

我正在尝试编译一些使用 CFNetwork 框架的代码,它在模拟器中运行良好(部署目标为 iOS 7.1),但是当我尝试在运行 iOS 的 iPhone 5 上运行它时7.1,它会抛出以下错误:

dyld:找不到符号:_NSURLAuthenticationMethodClientCertificate 引用自:/var/mobile/Applications/...... 预期在:/System/Library/Frameworks/CFNetwork.framework/CFNetwork 在 /var/mobile/Applications/...

关于我的应用程序的信息,它是用 Swift 编写的,我通过 Parse 导入 CFNetwork,我通过一个 Objective-C 桥接头将其导入到我的 Swift 代码中。

正如其他人所建议的那样,我可以通过将 CFNetwork 框架设为可选而不是必需来解决此错误。但是,我的应用程序需要 CFNetwork 框架才能工作(我使用 Parse 作为后端,没有它就无法通信)。

因此,我很好奇是否有人能够通过使用上述以外的方法解决此问题。

【问题讨论】:

  • 我在这里找到了让它在我的项目中工作的答案,可能会对你有所帮助。 stackoverflow.com/questions/24043532/…
  • 感谢您的建议,但明确添加 Foundation 框架对我不起作用。
  • 使用 Xcode 6 Beta 的 Obj-C 应用程序出现相同错误,当我切换到 Xcode 5 时效果很好。
  • 我在设备上遇到过类似的崩溃,请查看this answer,有帮助吗?
  • @Claus 在应用程序的“链接框架和二进制文件”选项卡中更改库的顺序,以便 Foundation 在 CFNetwork 没有更改框架实际导入的顺序之前出现。为了更改顺序,我必须在我的 Pods.xcconfig 文件的 OTHER_LDFLAGS 部分中更改导入框架的顺序,以便 -framework Foundation 位于 -framework CFNetwork 之前。抱歉延迟回复,祝你好运!

标签: ios xcode


【解决方案1】:

当我将自己制作的应用程序从一台计算机移动到另一台计算机时出现此错误。如果您使用 CMake 或等效的东西来生成项目文件,那么我有一个解决方案:在 CMake 中,我没有选择 XCode 作为生成器,而是切换到 Unix Makefiles。然后我所要做的就是在终端中导航到生成 make 文件的文件夹并输入:

$ make
$ sudo make install

这创建了应用程序,其中所有框架和动态库都正确打包在我的 /usr/local/bin 文件夹中。

我知道这个错误在 XCode 中也是可以修复的,但是我花了很多时间在设置上坐立不安,却一直没有弄清楚。这是我打包应用程序的解决方案;但是,我仍然在 XCode 中进行所有编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多