これは OpenCL チュートリアルからのものです。私は持っている:
void* args[4] = {(void*)5, (void*)123, NULL, NULL};
cl_mem mem_list[2] = {mem_d1, mem_d2}; // mem_d1 and mem_d2 are cl_mem objects
void* args_mem_loc[2] = {&args[2], &args[3]};
status = clEnqueueNativeKernel(*queue, nativeKernel, args, 4, 2, mem_list, args_mem_loc, 0, NULL, NULL); // http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/clEnqueueNativeKernel.html
コンパイラ エラーが発生し続けます (status = clEnqueueNativeKernel(*queue... の行で、それが話しているパラメーターは args_mem_loc です)。
error C2664: 'clEnqueueNativeKernel' : cannot convert parameter 7 from 'void *[2]' to 'const void **'
args_mem_loc は void ポインターの配列への void ポインターであり、それが使用するすべての変数はスタック上に作成されます (そうですか? 私はかなり確信しています)。では、なぜコンパイラはそれを void* [2] と見なすのでしょうか?