2011-07-26 123 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/");