Yak*_*kov 8 c++ header include opencl
我在一个.cl文件中写了一个OpenCL内核.它尝试了#include几个标题.
它的编译失败,因为包含的头文件"找不到".我知道clBuildProgram可以-I dir选择,它将目录添加dir到要搜索头文件的目录列表中.
在khronus网站论坛上,这篇文章http://www.khronos.org/message_boards/viewtopic.php?f=37&t=2535讨论了这个问题.
他们建议使用clCreateProgramWithSource指定所有来源(包括.h文件).
我对这个问题有疑问:
clBuildProgram对比clCreateProgramWithSource,如上所述)clCreateProgramWithSource编译器如何知道包含什么?我的意思是,哪个来源代表哪个包含文件名?clBuildProgram并且有几个包含文件的目录,我该如何指定它们?OpenCL要求您使用clCreateProgramWithSource()后跟clBuildProgram().
ClCreateProgramWithSource()创建并返回一个 cl_program对象.
该cl_program对象输入clBuildProgram().
clBuildProgram()允许您指定包含包含文件目录的编译器选项.在您的情况下,对于头文件包含,它将类似于字符串:
-I myincludedir1 -I myincludedir2 ...
Run Code Online (Sandbox Code Playgroud)
使用的编译器是您正在使用的OpenCL SDK中的内部OpenCL编译器.因此,如果您使用AMD的SDK,将使用属于其OpenCL SDK的AMD OpenCL编译器.同样适用于Nvidia或英特尔.
检查所有OpenCL函数调用的OpenCL状态代码非常重要.这是强制性的clCreateProgramWithSource(),并clBuildProrgam()得到任何编译器错误或消息.还有一整个其他位代码要写入以获取消息的大小,然后自己检索消息.