OpenCL包括Windows上的code :: blocks中的cl.h

JDS*_*JDS 1 c include opencl

这里的配置问题,希望将来有助于其他人.

我创建了一个文件夹"C:\ openCLcode\include \",其中包含Khronos网站上的所有必要文件:http://www.khronos.org/registry/cl/

现在我想创建一个运行openCL的Code :: Blocks项目.所以我粘贴一些示例代码并更改包含路径:

在我的.c文件中:

#include <C:\openCLcode\include\cl.h>
Run Code Online (Sandbox Code Playgroud)

在该cl.h文件中,它抱怨了cl_platform.h所以我也修复了这条道路:

#include <C:\openCLcode\include\cl_platform.h>
Run Code Online (Sandbox Code Playgroud)

现在我遇到的问题是:undefined reference to '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;
}
Run Code Online (Sandbox Code Playgroud)

我觉得我真的搞砸了我的包容方案......有人可以推荐一个更好的方法来解决这个问题吗?

非常感激

Dem*_*roL 6

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

1)右键单击您的项目(在codeblocks中)

2)选择"构建选项"

3)选择"链接器设置"选项卡

4)按"添加"按钮

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

或者你可以用你的项目编译OpenCL :)只需在你的项目中添加所有openCL .cpp文件并尝试构建它.