在Windows上的代码::块中包含cl.h的OpenCL

在Windows上的代码::块中包含cl.h的OpenCL,c,include,opencl,C,Include,Opencl,这里的配置问题,希望将来能帮助别人 我创建了一个文件夹C:\openCLcode\include\,其中包含来自Khronos站点的所有必要文件: 现在我想创建一个运行openCL的Code::Blocks项目。因此,我粘贴了一些示例代码并更改了包含路径: 在my.c文件中: #include <C:\openCLcode\include\cl.h> 现在我遇到的问题是:引用'clGetPlatformIDs@12'这是有问题的函数和行: cl_device_id create_d

这里的配置问题,希望将来能帮助别人

我创建了一个文件夹C:\openCLcode\include\,其中包含来自Khronos站点的所有必要文件:

现在我想创建一个运行openCL的Code::Blocks项目。因此,我粘贴了一些示例代码并更改了包含路径:

在my.c文件中:

#include <C:\openCLcode\include\cl.h>
现在我遇到的问题是:引用'clGetPlatformIDs@12'这是有问题的函数和行:

cl_device_id create_device() {

   cl_platform_id platform;
   cl_device_id dev;
   int err;

   /* Identify a platform */
    //////////////THIS IS THE LINE WITH ERROR:////////////
   err = clGetPlatformIDs(1, &platform, NULL);
    //////////////////////////////////////////////////////
   if(err < 0) {
      perror("Couldn't identify a platform");
      exit(1);
   }

   /* Access a device */
   err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &dev, NULL);
   if(err == CL_DEVICE_NOT_FOUND) {
      err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 1, &dev, NULL);
   }
   if(err < 0) {
      perror("Couldn't access any devices");
      exit(1);
   }

   return dev;
}
我觉得我真的把我的包含计划搞砸了。。。。有人能推荐一个更好的方法吗


非常感谢

您需要将libOpenCL.a库链接到您的项目

1右键单击您投射的代码块

2选择构建选项

3选择选项卡链接器设置

4按添加按钮

5选择带有openCL库的路径并选择libOpenCL.a


或者,您可以在项目中编译OpenCL:只需在项目中添加所有OpenCL.cpp文件并尝试构建它。

您需要将libOpenCL.a库链接到您的项目

1右键单击您投射的代码块

2选择构建选项

3选择选项卡链接器设置

4按添加按钮

5选择带有openCL库的路径并选择libOpenCL.a


或者,您可以在项目中编译OpenCL:只需在项目中添加所有OpenCL.cpp文件并尝试构建它。

未定义的引用通常意味着您没有链接所有库。这是什么?我该如何做?在Code::Blocks中,我正在使用GNU GCC编译器。我想我所要做的就是包括头文件,我很好。显然不是。未定义的引用通常意味着你没有链接所有的库。这是什么?我该怎么做?在Code::Blocks中,我正在使用GNU GCC编译器。我想我所要做的就是包括头文件,我很好。显然不是……谢谢你的回复。我似乎没有libOpenCL.a,我将尝试下载并链接它。它成功了!我在MinGW shell中使用gendef从OpenCL.dll生成libOpenCL.a。因此,我运行了我的第一个openCL程序。感谢您的回复。我似乎没有libOpenCL.a,我将尝试下载并链接它。它成功了!我在MinGW shell中使用gendef从OpenCL.dll生成libOpenCL.a。因此,我运行了我的第一个openCL程序。
cl_device_id create_device() {

   cl_platform_id platform;
   cl_device_id dev;
   int err;

   /* Identify a platform */
    //////////////THIS IS THE LINE WITH ERROR:////////////
   err = clGetPlatformIDs(1, &platform, NULL);
    //////////////////////////////////////////////////////
   if(err < 0) {
      perror("Couldn't identify a platform");
      exit(1);
   }

   /* Access a device */
   err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &dev, NULL);
   if(err == CL_DEVICE_NOT_FOUND) {
      err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 1, &dev, NULL);
   }
   if(err < 0) {
      perror("Couldn't access any devices");
      exit(1);
   }

   return dev;
}