Как прикрутить opencl к Qt Creator |
Здравствуйте, гость ( Вход | Регистрация )
Как прикрутить opencl к Qt Creator |
Alex_K |
31.7.2010, 19:36
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 20.11.2009 Пользователь №: 1244 Спасибо сказали: 0 раз(а) Репутация: 0 |
Проблема: возникают ошибки при сборке 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 |
31.7.2010, 21:13
Сообщение
#2
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
а гуглить пробовал?)
хидерники опенсл можно на офф сайте khronos group скачать, ну а остальное барахло на сайтах производителя видеокарты для АТИ на developer.amd.com, для нвидии поищи убедись что твоя видеокарта поддерживает опенсл, там же |
|
|
Alex_K |
31.7.2010, 21:36
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 20.11.2009 Пользователь №: 1244 Спасибо сказали: 0 раз(а) Репутация: 0 |
С этой проблемой уже разобрался. Скачал 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 |
31.7.2010, 21:40
Сообщение
#4
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
а что представляет собой символ qt_cl_context_notify?
|
|
|
Alex_K |
31.7.2010, 22:07
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 20.11.2009 Пользователь №: 1244 Спасибо сказали: 0 раз(а) Репутация: 0 |
В этом как раз и проблема Где оно там объявляется я пока не нашел Если поработать К.О. то можно предположить что это указатель на функцию...
(Приведенный код находится в 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 |
31.7.2010, 22:44
Сообщение
#6
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
Цитата Сей код я не то чтобы понимаю, так что буду крайне благодарен, если мне объяснят что означает мыслеформа extern "C". это вопросы по с++, extern "C" - в двух словах: указывает что qt_cl_context_notify() можно использовать в программах на языке Си А вообще советую покурить Липпман - С++ для начинающих
потому что qt_cl_context_notify передается в функцию как указатель на функцию, курить ту же книжку - "указатели на функции" |
|
|
Alex_K |
31.7.2010, 23:10
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 20.11.2009 Пользователь №: 1244 Спасибо сказали: 0 раз(а) Репутация: 0 |
Книгу скачал, обязательно ознакомлюсь. Спасибо.
И все таки, нет ли идей чем вызваны ошибки 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 |
31.7.2010, 23:25
Сообщение
#8
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
у меня нету.
вообще, не понятно, это компилятор ошибки выдает или что? где код ошибки? и что вообще творится? ты туториал какой то проходишь? если да, то какой? и что пытаешься сделать? P.S а для спасибо есть кнопочга специальная |
|
|
Alex_K |
1.8.2010, 10:18
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 20.11.2009 Пользователь №: 1244 Спасибо сказали: 0 раз(а) Репутация: 0 |
+++вообще, не понятно, это компилятор ошибки выдает или что? где код ошибки? и что вообще творится?
Ошибки на этапе сборки. Насколько я понимаю негодует qmake. +++ты туториал какой то проходишь? если да, то какой? и что пытаешься сделать? Проходимый мною tutorial все еще называется "Прикрути qtopencl к qtcreator". Что я пытаюсь сделать, - средствами qt creator собрать проект qtopencl.pro. Насколько я понимаю на выходе должна получиться библиотека которая куда-то там встроится и будет мне щастье в виде работающего opencl. |
|
|
DIMEDROLL |
13.8.2010, 14:07
Сообщение
#10
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
попробовал компильнуть через 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 |
|
|
Текстовая версия | Сейчас: 30.11.2024, 8:13 |