Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的openCL构建在OSX上失败?_C_Macos_Opencl - Fatal编程技术网

为什么我的openCL构建在OSX上失败?

为什么我的openCL构建在OSX上失败?,c,macos,opencl,C,Macos,Opencl,我使用的是OS X 10.7 Lion,安装了所有的开发工具,但是当我在一个相对简单的程序上运行GCC时,只需直接使用C,并调用一些openCL函数,如clCreateProgramFromSource等,我会得到以下错误列表: Undefined symbols for architecture x86_64: "_CreateContext", referenced from: _build_kernel in ccFuZYMI.o "_GetDevices", refere

我使用的是OS X 10.7 Lion,安装了所有的开发工具,但是当我在一个相对简单的程序上运行GCC时,只需直接使用C,并调用一些openCL函数,如
clCreateProgramFromSource
等,我会得到以下错误列表:

Undefined symbols for architecture x86_64:
  "_CreateContext", referenced from:
    _build_kernel in ccFuZYMI.o
  "_GetDevices", referenced from:
    _build_kernel in ccFuZYMI.o
  "_CreateCommandQueue", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clCreateProgramWithSource", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clBuildProgram", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clCreateKernel", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clCreateBuffer", referenced from:
    _build_kernel in ccFuZYMI.o
  "_clEnqueueWriteBuffer", referenced from:
    _sync_run_kernel in ccFuZYMI.o
  "_clSetKernelArg", referenced from:
    _sync_run_kernel in ccFuZYMI.o
  "_clEnqueueNDRangeKernel", referenced from:
    _sync_run_kernel in ccFuZYMI.o
  "_clEnqueueReadBuffer", referenced from:
    _sync_run_kernel in ccFuZYMI.o
  "_clReleaseContext", referenced from:
    _destroy_kernel in ccFuZYMI.o
  "_clReleaseCommandQueue", referenced from:
    _destroy_kernel in ccFuZYMI.o
  "_clReleaseMemObject", referenced from:
    _destroy_kernel in ccFuZYMI.o
  "_clReleaseProgram", referenced from:
    _destroy_kernel in ccFuZYMI.o
  "_clReleaseKernel", referenced from:
    _destroy_kernel in ccFuZYMI.o
ld: symbol(s) not found for architecture x86_64
还有一些其他警告,但在计算阶段没有其他错误。这是(如果不清楚)链接器错误。在创建对象文件时,它似乎能够看到头文件中的定义,因为它会对不兼容的指针类型发出警告


我曾尝试粘贴到xcode项目中,但我得到了完全相同的错误。我已尝试了,但没有任何帮助。

看起来您缺少OpenCL框架-请尝试:

$ gcc -Wall foo.c -framework OpenCL -o foo

在我看来,你没有链接到OpenCL库。您可以发布您尝试使用的链接命令吗?如果没有这些信息,只需从头开始:添加
-framework OpenCL

可能的副本我也有同样的问题,我通过在Mac中添加现有的OpenCL框架解决了这个问题。我提到了think link——我想知道为什么苹果不能让它成为lopenglindeed旗下的图书馆,这就是问题所在。愚蠢!我仍然有一些缺少的符号,但看起来它们是仅存在于NVidia在线示例中的快捷方式。谢谢非常感谢,你也是对的!唉,保罗·R得到了正确的答案,因为他(稍微)快了一点