C++ 运行OpenCl程序visual studio 2010时出错?

C++ 运行OpenCl程序visual studio 2010时出错?,c++,visual-studio,visual-studio-2010,opencl,C++,Visual Studio,Visual Studio 2010,Opencl,我正在使用VisualStudio2010,刚刚开始学习opencl 现在我的问题是:当我运行任何用opencl编写的程序时,会出现以下消息: is not recognized as internal or external command, operable program or patch file. 这个问题的解决方案是什么 这是一个用OpenCL和C++编写的代码。此程序应将两个数组相加并打印结果: #include <iostream> #include <CL/

我正在使用VisualStudio2010,刚刚开始学习opencl

现在我的问题是:当我运行任何用opencl编写的程序时,会出现以下消息:

is not recognized as internal or external command,
operable program or patch file.
这个问题的解决方案是什么

这是一个用OpenCL和C++编写的代码。此程序应将两个数组相加并打印结果:

#include <iostream>
#include <CL/cl.hpp>

int main(){
//get all platforms (drivers)
std::vector<cl::Platform> all_platforms;
cl::Platform::get(&all_platforms);
if(all_platforms.size()==0){
    std::cout<<" No platforms found. Check OpenCL installation!\n";
    exit(1);
}
cl::Platform default_platform=all_platforms[0];
std::cout << "Using platform: "<<default_platform.getInfo<CL_PLATFORM_NAME>()<<"\n";

//get default device of the default platform
std::vector<cl::Device> all_devices;
default_platform.getDevices(CL_DEVICE_TYPE_ALL, &all_devices);
if(all_devices.size()==0){
    std::cout<<" No devices found. Check OpenCL installation!\n";
    exit(1);
}
cl::Device default_device=all_devices[0];
std::cout<< "Using device: "<<default_device.getInfo<CL_DEVICE_NAME>()<<"\n";


cl::Context context({default_device});

cl::Program::Sources sources;

// kernel calculates for each element C=A+B
std::string kernel_code=
        "   void kernel simple_add(global const int* A, global const int* B, global int* C){       "
        "       C[get_global_id(0)]=A[get_global_id(0)]+B[get_global_id(0)];                 "
        "   }                                                                               ";
sources.push_back({kernel_code.c_str(),kernel_code.length()});

cl::Program program(context,sources);
if(program.build({default_device})!=CL_SUCCESS){
    std::cout<<" Error building: "<<program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(default_device)<<"\n";
    exit(1);
}


// create buffers on the device
cl::Buffer buffer_A(context,CL_MEM_READ_WRITE,sizeof(int)*10);
cl::Buffer buffer_B(context,CL_MEM_READ_WRITE,sizeof(int)*10);
cl::Buffer buffer_C(context,CL_MEM_READ_WRITE,sizeof(int)*10);

int A[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int B[] = {0, 1, 2, 0, 1, 2, 0, 1, 2, 0};

//create queue to which we will push commands for the device.
cl::CommandQueue queue(context,default_device);

//write arrays A and B to the device
queue.enqueueWriteBuffer(buffer_A,CL_TRUE,0,sizeof(int)*10,A);
queue.enqueueWriteBuffer(buffer_B,CL_TRUE,0,sizeof(int)*10,B);


//run the kernel
cl::KernelFunctor simple_add(cl::Kernel(program,"simple_add"),queue,cl::NullRange,cl::NDRange(10),cl::NullRange);
simple_add(buffer_A,buffer_B,buffer_C);

//alternative way to run the kernel
/*cl::Kernel kernel_add=cl::Kernel(program,"simple_add");
kernel_add.setArg(0,buffer_A);
kernel_add.setArg(1,buffer_B);
kernel_add.setArg(2,buffer_C);
queue.enqueueNDRangeKernel(kernel_add,cl::NullRange,cl::NDRange(10),cl::NullRange);
queue.finish();*/

int C[10];
//read result C from the device to array C
queue.enqueueReadBuffer(buffer_C,CL_TRUE,0,sizeof(int)*10,C);

std::cout<<" result: \n";
for(int i=0;i<10;i++){
    std::cout<<C[i]<<" ";
}

return 0;
#包括
#包括
int main(){
//获取所有平台(驱动程序)
std::矢量所有_平台;
cl::平台::获取(&所有_平台);
如果(所有平台.size()==0){

我敢说我们没有足够的信息来回答你的问题。这个信息有点模糊。它是在什么情况下发生的?还有,你所说的“用OpenCL编写的程序”是什么意思?@HenriqueJung post已编辑,请检查。它仅适用于OCL应用程序还是任何应用程序?因为操作系统似乎不理解您生成的可执行文件。您的项目解决方案似乎没有正确配置某些内容,我认为这与代码本身无关。您还没有编译代码。请尝试粘贴此内容在VS的新解决方案上编写代码,甚至使用另一个IDE/编译器。此外,您可能忘记了消息的第一个字,什么是不可识别的?