سؤال

ولقد رأيت هذا القيام به منذ فترة طويلة مع رمز HLSL / GLSL تظليل - باستخدام #include على ملف التعليمات البرمجية المصدر أن يلصق التعليمات البرمجية في char* بحيث لا يوجد ملف IO يحدث في وقت التشغيل

.

إذا كان لي أن تمثل أنها الزائفة رمز، انها تبدو قليلا مثل هذا:

#define CLSourceToString(filename) " #include "filename" "
const char* kernel = CLSourceToString("kernel.cl");

والآن بالطبع أن #define لن تعمل لأنها سوف مجرد محاولة لاستخدام هذه علامات الاقتباس لبدء السلاسل.

هل كانت مفيدة؟

المحلول

واطلع على استخدام محركات الفيزياء رصاصة OpenCL ل <لأ href = "http://code.google.com/p/bullet/source/browse/trunk/Demos/VectorAdd_OpenCL/MiniCL_VectorAdd.cpp؟r=2106" يختلط = "noreferrer"> كيف للقيام بذلك ل<لأ href = "http://code.google.com/p/bullet/source/browse/trunk/Demos/VectorAdd_OpenCL/VectorAddKernels.cl؟r= 2106 "يختلط =" noreferrer "> نواة .

في C ++ / C مصدر

#define MSTRINGIFY(A) #A
char* stringifiedSourceCL = 
#include "VectorAddKernels.cl"

في مصدر OpenCL

MSTRINGIFY(
   __kernel void VectorAdd(__global float8* c)
   {
    // snipped out OpenCL code...
    return;
   }
);

نصائح أخرى

ووفقا ل هذا ، انها لم يكن ممكنا، ولكن يمكنك استخدام xxd -i إلى archieve نفس التأثير.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top