~~NOTOC~~ ====== clCreateProgramWithSource ====== Erstellt ein Programm-Objekt für den Kontext und lädt den Quellcode, der durch die Strings in //strings// angegeben wurde in das Programm-Objekt. ===== Signatur ===== cl_program clCreateProgramWithSource ( cl_context context, cl_uint count, const char **strings, const size_t *lengths, cl_int *errcode_ret) ===== Parameter ===== **context:** der gültige OpenCL-Kontext **count:** gibt die Anzahl der Strings in //strings// an. **strings:** Eine Anzhal zeiger zu optional Null-terminierten Zeichenketten, die den Sourcecode darstellen, der geladen werden soll. **lengths:** Feld mit der Anzahl Zeichen für jeden String (Stringlänge). Galls ein Element in //lenghts// 0 sein sollte, muss der entsprechene Eintrag in //strings// Null-terminiert sein. Falls //lengths// NULL ist, müssen alle Argumente in //string// Null-terminiert sein. Jeder Wert, der größer ist als 0 zählt das Nullbyte nicht mit. **errcode_ret:** Gibt einen entsprechenden Fehlercode zurück. Falls //errcode_ret// NULL ist, dann wird kein Fehlercode zurückgeliefert. Mögliche Fehlercodes: ^ Wert ^ Beschreibung ^ | CL_SUCCESS | Die Funktion wurde erfolgreich ausgeführt und ein cl_program-Objekt wurde zurückgeliefert, was nicht 0 ist. | | CL_INVALID_CONTEXT | //context// ist kein gültiger Kontext | | CL_INVALID_VALUE | //count// ist 0 oder //strings// oder irgendein Eintrag in //strings// ist NULL | | CL_OUT_OF_RESOURCES | Es ist ein Fehler beim Reservieren von Speicher aufgetreten, der für die OpenCL-Implementation auf dem Gerät gebraucht wird. | | CL_OUT_OF_HOST_MEMORY | Es ist ein Fehler beim Reservieren von Speicher aufgetreten, der für die OpenCL-Implementation auf dem Hostprozressor gebraucht wird. | ===== Rückgabewert ===== Das Programm-Objekt mit dem Quellcode geladen. ===== Hinweise ===== Die Funktion erstellt ein Programm-Objekt für den gegebenen Kontext und lädt den Sourcecode, der durch //strings// gegeben wurde in das Programm-Objekt. Die Geräte, was mit dem Programm-Objekt in Verbindung steht, sind die, die in dem Kontext verwendet werden. Der Quellcode, der ist entweder OpenCL C Programmcode, Header oder eine andere Quelle (Implementationsabhängig) für CUSTOM-Devices, die Online-Compiler unterstützen. ===== Beispiel ===== // context=clCreateContext(...) char* source_str="__kernel void merge () { ... }\n"; size_t source_size=strlen(source_str); int ret=0; cl_program program = clCreateProgramWithSource(context, 1, (const char **)&source_str, (const size_t *)&source_size, &ret); ===== Siehe auch ===== * [[opencl:reference:clcreatecontext|clCreateContext]] * [[opencl:reference:clbuildprogram|clBuildProgram]] * [[opencl:reference:clcreatekernel|clCreateKernel]] * [[opencl:reference:clreleaseprogram|clReleaseProgram]]