接着上节的说,既然已经跑通了人家给的例程,那就在我的Qt下再试试,看看会有什么问题出现。
首先在Qt下建立一个纯C++的工程,然后把例程HelloWorld文件夹里的HelloWorld.cpp的内容完全拷贝过来。因为工程要用到OpenCL,所以要配置OpenCL库的路径
打开MyfirstOpenCL.pro,添加:
INCLUDEPATH+=/opt/AMDAPPSDK-3.0/include/
LIBS+=/opt/AMDAPPSDK-3.0/lib/x86_64/sdk/libOpenCL.so (或者LIBS+=-L/opt/AMDAPPSDK-3.0/lib/x86_64/sdk/ -lOpenCL)
保存,编译通过,但是一运行就报错:
error while loading shared libraries:libOpenCL.so.1:cannot open shared object file:No such file or directory
这个错误我之前在linux下,运行例程时候也遇到过,解决办法是重新source /etc/profile即可。这么看的话,编译能通过,说明就能找到库,但是运行时候说找不到,那就是我的Qt的自动搜索的LD_LIBRARY_PATH不正确。可是我明明已经在/etc/profile里配置了呀,也source了,无奈之下,关机重新启动。
编译MyfirstOpenCL程序,运行通过,输出结果:
No GPU devide availabel.
Choose CPU as default device.
Error:failed to open file
:HelloWorld_kernel.cl
input string:
GdkknVnqkc
output string:
passed!
按<RETURN>来关闭窗口...
查看程序,原来在第5步时候用到了HelloWorld_Kernel.cl文件,而且路径是当前路径,所以把HelloWorld_Kernel.cl文件拷贝到build-MyfirstOpenCL-Desktop-Qt_5_4_2_GCC_64bit_Debug文件里。或者随便把它拷贝到一个文件里,然后更改使用路径就行了。
继续编译,通过,打印结果:
No GPU devide availabel.
Choose CPU as default device.
input string:
GdkknVnqkc
output string:
HelloWorld
passed!
按<RETURN>来关闭窗口...
成功!ps:系统这个东西有事时候就是这么奇怪!