c - OpenCL 在 code::blocks 中包括 cl.h on Windows

标签 c include opencl

这里的配置问题,希望以后能对其他人有所帮助。

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

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

在我的 .c 文件中:

#include <C:\openCLcode\include\cl.h>

在那个 cl.h 文件中它提示 cl_platform.h 所以我也修复了那个路径:

#include <C:\openCLcode\include\cl_platform.h>

现在我遇到的问题是: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;
}

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

非常感谢

最佳答案

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

1) 右键单击​​您的项目(在代码块中)

2) 选择“构建选项”

3) 选择标签“链接器设置”

4) 按“添加”按钮

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

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

关于c - OpenCL 在 code::blocks 中包括 cl.h on Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13242460/

相关文章:

c - 在C中解密密码

c - 使用Linux C select系统调用来监视文件

php - PHP 中的命名空间声明 (5.3.5)

opencl - 了解 OpenCL 中的合并

c - C 中二维数组的访问

c - 没有监听时如何在套接字上发送消息?

Android 包含在布局的底部

maven-2 - Maven2解压仅包含内部文件

c++ - C/C++ 代码和库混合

c++ - 我可以在相同的设备缓冲区上一个接一个地调用 OpenCL 内核吗?