OpenGL 数学 (GLM) 与 AVFoundation 冲突:对 'simd_char' 的调用不明确

OpenGL Mathematics (GLM) conflicts with AVFoundation: Call to 'simd_char' is ambiguous

我正在构建一个 iOS 游戏,其中包含用于执行 GLSL 中所需的一些计算的 GLM 库(尤其是 - 投影矩阵)。我还使用 AVFoundation API 在应用程序的某些屏幕中播放视频。如果我尝试导入 AVFoundation.

,在 header 搜索路径中包含 GLM 会导致以下许多错误
/Applications/Xcode_10.2.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk/usr/include/simd/conversion.h:1069:73: Call to 'simd_char' is ambiguous

重现的步骤是:

  1. 在 XCode
  2. 中创建 iOS 应用程序项目
  3. 在 header 搜索路径中包含 glm
  4. 在项目的任何地方导入AVFoundation

我创建了一个重现此问题的示例项目 here

如何使用包含的 AVFoundation 进行 GLM 编译?

作为参考,我的游戏的某些部分是用 c 语言编写的(对于核心引擎),而其他部分是 Swift/objc(对于 Cocoa/UIKit)。 我正在使用 GLM 0.9.9.6

我认为您应该在“构建设置”中更改“用户 Header 搜索路径”而不是“Header 搜索路径”,因为 AVFoundation 指的是 <..simd> , <...> 表示“构建设置”中的“Header 搜索路径”。

  1. $SOURCE_ROOT/glm 添加到“用户 Header 搜索路径”并将其从“Header 搜索路径”中删除(如果存在)
  2. glm 文件夹复制到源文件的根目录