2011-07-26 82 views
4

post, 如果我有头文件,其中有一些函数实现它应该包含在几个内核中(我的意思是这些函数在所有内核中都是辅助的,我不想复制代码)OpenCL,包含文件

我如何使这个包含 - 我可以保持头部中的函数吗?将内核和头函数编译?

你可以指定(也许通过例子)我在这种情况下如何使用“-I”选项? 我使用VS2010(如果它在所有问题)

注:每个内核不同的程序运行

回答

7

OpenCL中为你的建议什么是的,你可以使用头。每个内核文件将包含头文件并编译它。

“-I”选项仅用于指定包含路径。如果您的包含在您的工作目录中,则不是必需的。这里是一个例子:

///////////////////////////////////////////////////////////////// 
// Load CL file, build CL program object, create CL kernel object 
///////////////////////////////////////////////////////////////// 
std::string sourceStr = FileToString(params.kernelFile); 

cl::Program::Sources sources(1, std::make_pair(sourceStr.c_str(), sourceStr.length())); 
cl::Program program = cl::Program(oclHandles.context, sources); 

program.build(oclHandles.devices,"-I c:/Includes/");