~~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]]