我试图解决我的问题几个小时,但我没有找到任何有用的提示。希望大家能帮帮我:
一些有用的数据:
操作系统:Windows 8 Basic 64bit
库:Intel OpenCL SDK
编译器:MinGW(-gcc)(最新版本)
IDE:Code::Blocks(最新版本)
最小不工作代码:
#include <stdlib.h>
#include <CL/cl.h>
int main(void)
{
cl_uint available;
cl_platform_id* platforms = (cl_platform_id*)malloc(sizeof(cl_platform_id));
cl_int result = clGetPlatformIDs(1, platforms, &available);
free(platforms);
if(result == CL_SUCCESS)
return 0;
return -1;
}
Code::Blocks 全局编译器设置:
链接器设置:添加了英特尔 OpenCL.lib 的路径([...]\Intel\OpenCL SDK\3.0\lib\x64\OpenCL.lib)(也尝试将 -lOpenCL 作为其他选项)
编译器的搜索目录:英特尔 OpenCL-SDK 包含目录的路径 ([...]\Intel\OpenCL SDK\3.0\include)
链接器的搜索-目录:英特尔 OpenCL-Lib 目录的路径 ([...]\ Intel\OpenCL SDK\3.0\lib\x64)
构建日志:
mingw32-g++.exe -L"[...]\Intel\OpenCL SDK\3.0\lib\x64" -o bin\Release\openCLTest.exe obj\Release\main.o -s "[...]\Intel\OpenCL SDK\3.0\lib\x64\OpenCL.lib"
obj\Release\main.o:main.c:(.text.startup+0x39): undefined reference to `clGetPlatformIDs@12'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings (0 minutes, 0 seconds)
我不知道为什么他没有正确链接。我修改了文本中的 [...] 以缩短路径,通常为“C:\Program Files (x86)...”。
希望你们能帮助我!真是令人沮丧!:(
您需要更多信息吗?
编辑:
好的......再过一小时,我就解决了自己的问题。
希望这个提示可以帮助其他一些人:
我必须另外链接到 x86 库(似乎某些功能没有在 X64 中实现)。
很高兴知道 -。-'''