Я начинаю изучать OpenCL и прочитал мини-курс от яндекс практикума, соответственно я сделал всё по их тутору, и когда очередь дошла до компиляции, я скачал библиотеку clew, я её не компилировал(не собирал), а оставил только заголовки, и исходник на C.
Единственное, что я изменил в коде от яндекса, поменял библиотеку на более новую, и убрал инклуд cl.h, ибо он и так уже есть в библиотеке.
В итоге, вот все отличия моего кода от исходников:
#include <clew/clew.h>
#include <algorithm>
...
Вот структура проекта:
И я подстроил clew.c под мою структуру проекта, заменив include "clew.h" на include <clew/clew.h>
Компилировал я так:
g++ -c main.cpp clew.c -I src/include
g++ -o main main.o clew.o -L src/lib -lOpenCL -opencl
При сборки *.o файлов, показывалось очень много warning-ов, но ошибок не было
Однако при компиляции main.exe, появлялись такие ошибки:
main.o:main.cpp:(.text+0x26): undefined reference to `_imp____clewGetPlatformIDs'
main.o:main.cpp:(.text+0x4b): undefined reference to `_imp____clewGetDeviceIDs'
main.o:main.cpp:(.text+0x1d6): undefined reference to `_imp____clewCreateProgramWithSource'
main.o:main.cpp:(.text+0x208): undefined reference to `_imp____clewBuildProgram'
main.o:main.cpp:(.text+0x2b6): undefined reference to `_imp____clewSetKernelArg'
main.o:main.cpp:(.text+0x2e2): undefined reference to `_imp____clewSetKernelArg'
main.o:main.cpp:(.text+0x30e): undefined reference to `_imp____clewSetKernelArg'
main.o:main.cpp:(.text+0x33a): undefined reference to `_imp____clewSetKernelArg'
main.o:main.cpp:(.text+0x366): undefined reference to `_imp____clewSetKernelArg'
main.o:main.cpp:(.text+0x392): more undefined references to `_imp____clewSetKernelArg' follow
main.o:main.cpp:(.text+0x452): undefined reference to `_imp____clewEnqueueNDRangeKernel'
main.o:main.cpp:(.text+0x4a4): undefined reference to `_imp____clewEnqueueReadBuffer'
main.o:main.cpp:(.text+0x505): undefined reference to `_imp____clewFinish'
main.o:main.cpp:(.text+0x656): undefined reference to `_imp____clewCreateContext'
main.o:main.cpp:(.text+0x6a7): undefined reference to `_imp____clewCreateKernel'
main.o:main.cpp:(.text+0x6cb): undefined reference to `_imp____clewCreateCommandQueue'
main.o:main.cpp:(.text+0x6fe): undefined reference to `_imp____clewCreateBuffer'
main.o:main.cpp:(.text+0x7e7): undefined reference to `_imp____clewReleaseKernel'
main.o:main.cpp:(.text+0x7f9): undefined reference to `_imp____clewReleaseMemObject'
main.o:main.cpp:(.text+0x80b): undefined reference to `_imp____clewReleaseCommandQueue'
main.o:main.cpp:(.text+0x81d): undefined reference to `_imp____clewReleaseProgram'
main.o:main.cpp:(.text+0x82f): undefined reference to `_imp____clewReleaseContext'
OS: Windows 11
Компилятор: g++ v7.3.0
