未定义的符号 ___llvm_profile_runtime

Undefined symbols ___llvm_profile_runtime

从 Xcode 11 开始使用 SwiftUI,它看起来非常 difficult/no 在单元测试中启用代码覆盖率并预览工作的方式。

这是我所做的:

  1. Select 目标 -> 在 Xcode
  2. 中编辑方案
  3. Select Test 选项卡和 Options 选项卡下的 select Gather coverage for一些目标(只有select主要目标)
  4. 转到 SwiftUI 文件,预览停止工作并出现以下错误。请注意,您仍然可以正常使用构建选项。

这是错误:

linker command failed with exit code 1 (use -v to see invocation)
    
failedToBuildDylib: ld: warning: directory not found for option '-F/Applications/Xcode.app/Contents/SharedFrameworks-iphonesimulator'
Undefined symbols for architecture x86_64:
  "___llvm_profile_runtime", referenced from:
      ___llvm_profile_runtime_user in Pods_RadioDemo(Pods-RadioDemo-dummy.o)
     (maybe you meant: ___llvm_profile_runtime_user)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

为了避免这个问题,我可以关闭代码覆盖。显然,这不是我要找的。请告诉我如何通过预览和代码覆盖率来实现完美世界。

只是一点参考here。好人 Timmmm 对一个非常相似的问题有一些见解。

我也被这个问题困扰了。 要解决此问题,您可能需要将 -fprofile-instr-generate 添加到 Build Settings > Linking > Other Linker Flags.

这个标志是一个用于覆盖率输出的选项。在我的环境中使用此设置,我成功地在启用覆盖的同时启用了预览。

我在 Objective-C 项目中遇到了类似的 ___llvm_profile_runtime_user 错误。

这是因为我的应用程序使用的框架之一是在代码覆盖率打开的情况下构建的。 (是单独建的,配置"Debug",不是现在的project/workspace建的。)

我 Xcode 很高兴在应用程序的方案中启用了相同的设置: 编辑方案 -> 测试 -> 选项 -> 代码覆盖率