【发布时间】:2018-02-03 22:10:56
【问题描述】:
这是Using #include to load OpenCL code的后续行动
我注意到,当您使用 grrussel 描述的方法(并在 Bullet Physics 中使用)时,创建的字符串会删除所有换行符(cmets 似乎也被删除了,但我不太担心) .现在在大多数情况下,如果包含的 opencl 代码中没有任何预处理器定义,这很好,但如果有,代码将无法使用 OpenCL 编译器进行编译。
有没有办法让#include 将换行符保留在那里,或者有更好的方法将 opencl 代码嵌入到我的可执行文件中(除了将字符串复制到 cpp 文件中并在所有内容周围加上引号) ?
我在 Visual Studio 2010 中对此进行了测试,我不确定其他编译器是否表现出相同的行为。我更喜欢一种不需要任何外部工具并适用于各种编译器/平台的方法。
从其他答案复制代码:
在 C++/C 源代码中
#define MSTRINGIFY(A) #A
char* stringifiedSourceCL =
#include "VectorAddKernels.cl"
在 OpenCL 源代码中
MSTRINGIFY(
__kernel void VectorAdd(__global float8* c)
{
// snipped out OpenCL code...
return;
}
);
【问题讨论】:
标签: c++ visual-studio-2010 opencl