首页 文章

使用Xcode 9编译框架

提问于
浏览
0

当我使用Xcode 8编译框架并在新项目中导入之后它成功构建并且我能够测试它 . 但是当我使用Xcode 9编译框架之后,我在新项目中添加了构建框架:

Undefined symbols for architecture arm64:
  "___llvm_profile_runtime", referenced from:
      ___llvm_profile_runtime_user in xxxxxxxxx(DMCService.o)
      ___llvm_profile_runtime_user in xxxxxxxx(APXUserInterfacePresentor.o)
      ___llvm_profile_runtime_user in xxxxxxxxx(APXDevice.o)
      ___llvm_profile_runtime_user in xxxxxxxxx(APXInboxService.o)
      ___llvm_profile_runtime_user in xxxxxxxxx(AppoxeeManager.o)
      ___llvm_profile_runtime_user in xxxxxxxxx(APXApplicationSession.o)
      ___llvm_profile_runtime_user in xxxxxxxxx(APXInbox.o)
      ...
     (maybe you meant: ___llvm_profile_runtime_user)
ld: symbol(s) not found for architecture arm64

我用-lipo -info架构检查构建的框架,它有arm64 . 只有当我为真实设备构建框架时才会发生这种情况,如果我为模拟器构建它可以正常工作 . 所以我无法弄清楚它为什么不起作用?

在此先感谢您的帮助 .

1 回答

  • 1

    可能您的框架构建配置将“启用代码覆盖率支持”(基础设置名称为CLANG_ENABLE_CODE_COVERAGE)设置为YES,而在应用程序中包含框架,相同的设置设置为NO . 为什么这会导致未定义的符号错误:启用该设置会导致对框架代码中的检测函数的调用 . 但是在构建应用程序时,定义这些函数的库没有链接 . 所以链接器(ld)失败了 .

    再次尝试,将“启用代码覆盖率支持”设置为“否”构建框架 .

    此外,为了避免这种配置不匹配错误,您可能希望同时构建应用程序和框架,而不是单独预先构建框架 . 您可以通过将框架项目包含为应用程序项目的子项目,或创建包含应用程序项目和框架项目的Xcode工作区来完成此操作 .

相关问题