Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как прикрутить opencl к Qt Creator
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt инструментарий
Alex_K
Проблема: возникают ошибки при сборке opencl.pro - компилятор не может найти файлы Cl/cl.h Cl/cl_platform.h etc. Файлов этих в компе, если верить поисковику, действительно нет . Внимание вопрос: где их взять?
ОС Windows XP
Qt Creator 2.0
с библиотеками Qt 4.7.0 (beta 2)
а также
Qt opencl


DIMEDROLL
а гуглить пробовал?)
хидерники опенсл можно на офф сайте khronos group скачать, ну а остальное барахло на сайтах производителя видеокарты для АТИ на developer.amd.com, для нвидии поищи
убедись что твоя видеокарта поддерживает опенсл, там же
Alex_K
С этой проблемой уже разобрался. Скачал Ati Stream с вожделенными файлами...
Теперь другое:

error: invalid conversion from 'void (*)(const char*, const void*, size_t, void*)' to 'void (*)(const char*, const void*, size_t, void*)'

error: initializing argument 4 of '_cl_context* clCreateContext(const cl_context_properties*, cl_uint, _cl_device_id* const*, void (*)(const char*, const void*, size_t, void*), void*, cl_int*)'

Функция выглядит так:

d->id = clCreateContext
(props, devs.size(), devs.constData(),
qt_cl_context_notify, 0, &(d->lastError));
DIMEDROLL
а что представляет собой символ qt_cl_context_notify?
Alex_K
В этом как раз и проблема Где оно там объявляется я пока не нашел Если поработать К.О. то можно предположить что это указатель на функцию...
(Приведенный код находится в qclcontext.cpp в моей версии 166-168 строки)

Вот объявляется оно так:

extern "C" {

static void qt_cl_context_notify(const char *errinfo,
const void *private_info,
size_t cb,
void *user_data)
{
Q_UNUSED(private_info);
Q_UNUSED(cb);
Q_UNUSED(user_data);
qWarning() << "OpenCL context notification: " << errinfo;
}

};

Сей код я не то чтобы понимаю, так что буду крайне благодарен, если мне объяснят что означает мыслеформа
extern "C".

Да, и еще, почему qt_cl_context_notify в предыдущем куске кода вызывается не как функция?
DIMEDROLL
Цитата
Сей код я не то чтобы понимаю, так что буду крайне благодарен, если мне объяснят что означает мыслеформа
extern "C".

это вопросы по с++, extern "C" - в двух словах: указывает что qt_cl_context_notify() можно использовать в программах на языке Си
А вообще советую покурить Липпман - С++ для начинающих
Да, и еще, почему qt_cl_context_notify в предыдущем куске кода вызывается не как функция?

потому что qt_cl_context_notify передается в функцию как указатель на функцию, курить ту же книжку - "указатели на функции"

Alex_K
Книгу скачал, обязательно ознакомлюсь. Спасибо.
И все таки, нет ли идей чем вызваны ошибки

error: invalid conversion from 'void (*)(const char*, const void*, size_t, void*)' to 'void (*)(const char*, const void*, size_t, void*)'

error: initializing argument 4 of '_cl_context* clCreateContext(const cl_context_properties*, cl_uint, _cl_device_id* const*, void (*)(const char*, const void*, size_t, void*), void*, cl_int*)'

?
DIMEDROLL
у меня нету.
вообще, не понятно, это компилятор ошибки выдает или что? где код ошибки? и что вообще творится? :)
ты туториал какой то проходишь? если да, то какой? и что пытаешься сделать?
P.S а для спасибо есть кнопочга специальная ;)
Alex_K
+++вообще, не понятно, это компилятор ошибки выдает или что? где код ошибки? и что вообще творится? :)

Ошибки на этапе сборки. Насколько я понимаю негодует qmake.

+++ты туториал какой то проходишь? если да, то какой? и что пытаешься сделать?

Проходимый мною tutorial все еще называется "Прикрути qtopencl к qtcreator".

Что я пытаюсь сделать, - средствами qt creator собрать проект qtopencl.pro. Насколько я понимаю на выходе должна получиться библиотека которая куда-то там встроится и будет мне щастье в виде работающего opencl.
DIMEDROLL
попробовал компильнуть через Visual Studio и получаю похожую ошибку:
Цитата
.\qclcontext.cpp(169) : error C2664: 'clCreateContext' : cannot convert parameter 4 from 'void (__cdecl *)(const char *,const void *,size_t,void *)' to 'void (__stdcall *)(const char *,const void *,size_t,void *)' None of the functions with this name in scope match the target type


из ошибки видно что функции отличаются параметром __cdecl * и __stdcall *
в этом нужно разобраться или написать им баг репорт
з.ы насколько я понял ты идешь по этому руководству:
http://doc.qt.nokia.com/opencl-snapshot/building.html
Гость
Цитата(Alex_K @ 31.7.2010, 19:36) *
Проблема: возникают ошибки при сборке opencl.pro - компилятор не может найти файлы Cl/cl.h Cl/cl_platform.h etc. Файлов этих в компе, если верить поисковику, действительно нет . Внимание вопрос: где их взять?
ОС Windows XP
Qt Creator 2.0
с библиотеками Qt 4.7.0 (beta 2)
а также
Qt opencl


Установи OpenCL SDK от ATI или NVidia
Alexandra
файлы CL/cl_platform.h и CL/cl.h нашла. теперь при сборке выдаёт ошибку:

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lOpenCL
collect2: ld returned 1 exit status

не знаю как поправить.
Rocky
Судя по ошибке вероятно не находит библиотеку OpenCL по пути написанном в pro-файле.
eternal_ego
Столкнулся с похожей проблемой, что и автор, только прикручиваю OpenCL к Qt под VisualStudio. Пытаюсь собрать собственно библиотечку из исходников http://qt.gitorious.org/qt-labs/opencl , и получаю:

Цитата
1>.\qclcontext.cpp(169) : error C2664: 'clCreateContext' : cannot convert parameter 4 from 'void (__cdecl *)(const char *,const void *,size_t,void *)' to 'void (__stdcall *)(const char *,const void *,size_t,void *)'
1> None of the functions with this name in scope match the target type
1>.\qclcontext.cpp(212) : error C2664: 'clCreateContext' : cannot convert parameter 4 from 'void (__cdecl *)(const char *,const void *,size_t,void *)' to 'void (__stdcall *)(const char *,const void *,size_t,void *)'
1> None of the functions with this name in scope match the target type


Если в свойствах проекта поменять CallingConvention на stdcall, то это уходит, но возникает проблема с тем, что имена функций в библиотеках получаются с префиксами (подчёркивания), и из-за этого не идёт линковка дальше. Есть конечно путь переделки библиотек, но по идее проект и так должен работать, неспроста же его в репозитории держат...

Alex_K, вы как решили вопрос?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.