我正在编写一个OpenCL内核,然后将其编译为可在GPU上运行。内核代码包含在* .cl文件中,然后由应用程序读取。始终将* .cl文件复制到应用程序文件夹很不方便。如果可以在应用程序编译期间将内核代码解析并转换为C char []字符串,则将是更好的解决方案。这样就无需向应用程序的用户提供原始* .cl文件。
因此,我的问题是:如何在编译应用程序时以最方便,最简单的方式将OpenCL代码转换为C字符串,然后由应用程序使用?有什么方法可以使用C预处理器来完成它,还是我需要运行Python,Perl或类似脚本来完成这项工作?
答案 0 :(得分:0)
请记住,可能会生成 C代码。您可以生成包含数组初始化的C代码。
因此您可以拥有一个(甚至可以找到一些现有的)实用程序,该实用程序可以生成一些C代码,例如
0x23, 0x34, 0x02, 0x33,
,并对该文件使用#include
。另请参见this答案。
该实用程序可以是简单的C程序,简单的Python脚本或某些Unix pipeline(将hd
或od
与cut
或awk
组合在一起,或者sed
等)。
您最好适当地配置build automation工具,以便在需要时重新生成此类标头。如果您使用make
,则只需在Makefile
中添加几行(一些配方)。
答案 1 :(得分:0)
它将不是C字符串,而只是字节数组。 C字符串是以零结尾的字符序列。
使用在线工具将二进制文件转换为C数组,例如http://tomeko.net/online_tools/file_to_hex.php?lang=en