我在XCODE中有两个项目,它们都使用OpenCL和 OpenCL包装器。
我使用的是Mac OS 10.11.4,使用的是Clang-703.0.29 7.3.0版和Xcode(7.3版(7D175))的最新版本(相当奇怪)。
第一个项目编译和构建得很好。生成的结果是静态库(cl.hpp
文件)。第二个使用这个库(我只是将库和头文件复制粘贴到这个项目的目录中)。我还链接了.a
和这个项目。
问题是,第二个项目没有构建。上面写着:
cgltypes.h-枚举器之间缺少“,”
此错误出现在第75行:
kCGLPFAStereo OPENGL_ENUM_DEPRECATED(10_0, 10_11) = 6,
这是我唯一的错误。当
OpenCL.framework
包含cl.hpp
时会发生这种情况,其中包括OpenCL/opencl.h
和OpenCL/cl_gl_ext.h
中的内容。基本SDK设置为最新版本(OS X 10.11)。发生了完全相同的问题,但已通过操作系统更新解决。我的Mac OS版本已经是最新的了,所以我不能这样做。
综上所述,问题在于两个项目使用相同版本的opencl,在同一台机器上构建,具有相同的设置、相同的编译器等,但其中一个没有编译。
编辑:这里有到第一个项目的链接:
#include <OpenGL/CGLTypes.h>
。我会尽快增加第二个。实际上,它是一个使用矩阵进行矩阵运算的人工神经网络。我唯一要做的就是把矩阵中的cl.hpp
和所有.hpp
s都包括进去。我还试图链接到矩阵库,但是构建过程甚至没有到达这个阶段。我该怎么做才能解决这个问题?
最佳答案:
好吧,问题是第二个(“坏掉的”)项目出于某种原因使用了旧版本的xcode工具(CreatedOnToolsVersion = 7.1
)。第一个是用CreatedOnToolsVersion = 7.3;
构建的。
如果我在不支持Opencl的情况下构建矩阵,并将第二个项目与生成的.a
库链接起来,那么一切都可以正常工作,因此Opencl和不同的CreatedOnToolsVersion
设置显然存在问题。
这个问题是通过创建一个新项目并复制那里的文件来解决的。
特别感谢@yakk在评论中提出的建议!