gpt4 book ai didi

c++ - 将 OpenCL 代码嵌入到可执行文件中

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:40 26 4
gpt4 key购买 nike

这是 Using #include to load OpenCL code 的跟进

我注意到,当您使用 grrussel 描述的方法(并在 Bullet Physics 中使用)时,创建的字符串会删除所有换行符(注释似乎也被删除,但我不太担心) .现在在大多数情况下,如果包含的 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;
}
);

最佳答案

我会编写一个小工具,从文本文件中生成一个带有常量字符串的 cpp,然后您可以将其与其他内容一起编译。

这就是 Qt 的资源编译器 moc 所做的(以及更多,因为它有一个完整的 API),还有 Windows 资源工具包的选项(参见下面的 this answer)。

无论如何,一个可以在目录中遍历文件并从中构建 cpp 的小型构建工具就足够了,而且您可以在 15 分钟内将它们组合在一起(如果具备合适的脚本编写技能)。

更新:根据 Henry 的评论,在 Linux(或 Msys/Cygwin)上,您可以使用 xxd使用 -i(即 xxd -i)标志,它读取一个文件并生成一个包含正确定义的确切内容的 c-include 文件。

关于c++ - 将 OpenCL 代码嵌入到可执行文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8248731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com