【发布时间】:2016-07-15 00:02:13
【问题描述】:
我在 Xcode 中有两个项目,它们都使用 OpenCL 和 cl.hpp - C++ 的 OpenCL 包装器。
我在 Mac OS 10.11.4 上,使用 clang-703.0.29 版本 7.3.0 和 Xcode 的最新(而且非常奇怪)版本(版本 7.3 (7D175))。
第一个项目编译和构建得非常好。构建的结果是一个静态库(.a 文件)。第二个使用这个库(我只是将库和标题复制并粘贴到这个项目的目录中)。我还将OpenCL.framework 与此项目相关联。
问题是,第二个项目没有构建。它说:
CGLTypes.h - 枚举数之间缺少“,”
此错误在第 75 行:
kCGLPFAStereo OPENGL_ENUM_DEPRECATED(10_0, 10_11) = 6,
这是我得到的唯一错误。当cl.hpp 包含OpenCL/opencl.h,其中包含OpenCL/cl_gl_ext.h 和#include <OpenGL/CGLTypes.h> 时,就会发生这种情况。
Base SDK 设置为最新 (OS X 10.11)。发生了完全相同的问题here,但已通过操作系统更新解决。我的 Mac OS 版本已经是最新的,所以我不能这样做。
综上所述,问题在于两个项目使用相同版本的OpenCL,构建在同一台机器上,具有相同的设置、相同的编译器等,但其中一个无法编译。
编辑:这是第一个项目的链接:Matrix on GitHub。我会尽快添加第二个。实际上,它是一个使用 Matrix 对矩阵进行运算的 ANN。我唯一要做的就是包含cl.hpp 和来自Matrix 的所有.hpps。我也在尝试链接.a Matrix 库,但构建过程甚至没有进入这个阶段。
我应该怎么做才能解决这个问题?
【问题讨论】:
-
32 位 64 位模糊可能?编译器、操作系统和绑定文件都可以吗?
-
@huseyintugrulbuyukisik,这发生在在同一台计算机上,使用相同的编译器。所以,我猜,他们还好
-
Framework 头文件的包含方式是否相同?也就是说,here 的答案是否能说明问题?
-
从 diff 工具开始。复制两个项目。确认复印件上的问题。使用 diff 工具查找差异。消除它们,使用源代码控制能够回滚。最终产生触发问题的极小差异。
-
@ForceBru 这就是为什么许多开发人员不喜欢使用 IDE 来生成构建项目的原因:它们会生成您不理解的随机“功能”,并且可能会以您无法合理理解的方式中断。碰巧的是,文本编辑器通常处理生成的文件。而不是“使用 XCode 生成新项目”,复制 XCode 项目文件。寻找任何提及项目的绝对路径,修复它们。现在使用文本编辑器和差异工具和源代码管理来隔离问题。