Коллбэки там примерно так же устанавливаются. Начинайте с минимального варианта. Единственное важное отличие - функция отрисовки также вызывается как колбэк, т.к. главный цикл явно не присутствует в приложении, а выполняется внутри glutMainLoop
sivabur если проблема еще актуальна - проверьте перед попыткой сериализации, что в датасете одна таблица, а в ней - 3 записи. И попробуйте WriteXml у таблицы вызвать, а не у датасета - и посмотреть, что выведется.
limon_spb сейчас напишу в ответ еще много чего интересного (не так просто там все). Вы правильно заметили странность, что OpenCL.dll мы взяли от NVIDIA.
limon_spb
> походу эта OpenCL.dll - 32 битная почему-то.
ну раз она запустилась с win32-экзешником, то логично что 32-битная) dll-ки могут загружаться только в процесс такой же разрядности, как и они сами. 32 в 64 или 64 в 32 нельзя никак.
> А правильно ли я понимаю, что если я потом захочу запустить эту программку на другом компе, то будут какие-то проблемы?
ну вообще, в том и смысл OpenCL, что он работает на разных устройствах. Т.е. это даже не CUDA, которая только для NVIDIA. Но это не значит, что вам делать совсем ничего не надо. Во-первых, нужно выполнить стандартную процедуру при дистрибуции C++ приложений. Например, раз вы собираете студийным компилятором, вам как минимум нужно позаботиться о наличии рантайма. В идеале его нужно поставить установщиком (с сайта MS можно скачать Visual C++ Redistributable для нужной версии студийного компилятора), но можно и просто положить DLL-ки рантайма рядом с EXE, как вы сделали с OpenCL.DLL. А вообще, все таки возьмите DepWalker, да просмотрите все зависимости, в том числе транзитивные. Какие DLL-ки грузит ваш EXE, какие DLL-ки грузят эти DLL-ки и т.д. Все, что не является частью системы или драйверов, нужно будет приложить. Сейчас это как минимум рантайм (msvcr120.dll, msvcp120.dll вы должны увидеть) и OpenCL.DLL. Если хотите, приложите скриншот с деревом библиотек из Волкера, посмотрим.
limon_spb все волшебство заключается лишь в том, как загрузчик винды ищет слинкованные к экзешнику DLL-ки, и поиск всегда начинается с текущей папки, а потом уже все остальное (system32, папки из PATH). К сожалению в винде ситуация такая, что если DLL-ка не претендует быть системной и врядли пригодится для остальных программ (в отличие, например, от С++ рантайма, который имеет смысл ставить через vc_redist установщик), то её проще взять "с собой" и просто распространять рядом с EXE.
> подложил эту dll туда
туда - это куда? Рядом с exe, который собирается Qt Creator? Очень странно, возможно битность не совпадает (конечно, если хедер и lib-файлы 100% те же самые).
Разумеется, для 64-битного EXE DLL-ка тоже нужна 64-битная, поищите где такая может быть.
limon_spb загружаемую DLL можно определить, открыв EXE Dependency Walker-ом, причем открывать его следует в той же папке, где он лежит, тогда будет ясно, какая DLL подтягивается. В идеале вы должны сами настроить копирование нужной DLL в папку c EXE при сборке или копировать ее вручную, если заморачиваться с автоматизацией смысла нет.
limon_spb создается впечатление, что DLL-ка не соответствует версии хедера и lib-файла. Уверены, что загружается правильная DLL?
И да, кстати, класс cl::Device предназначен для использования по значению, а не по указателю?
> Есть готовое b-дерево на C++. Имеются функции вставки, удаления и поиска.
> Вопрос. Как организовать работу структуры b-дерева, файла данных и файла индексов ?
Готовое b-дерево есть работающая структура b-дерева, не обязательно с отображением в файл, но по кр. мере в памяти. Таки непонятно, что у вас есть, а что нужно реализовать.
Ну вот про гит и почитайте. Если работа будет идти преимущественно с текстом, то он подойдет. Как его подключать к проекту зависит от выбранных вами технологий.
Да, совершенно верно.
Я думаю этот вопрос взят из билетов для подготовки, а большинство студентов (да что уж там студентов - преподавателей) довольно не скоро узнают о том, что ивент это считай такая же обертка, как и get/set у свойства (обычно узнают где-то лет через 5 разработки на языке, что оказывается можно задавать кастомное поведение для add/remove при описании ивента), и будут использовать его только с делегатом :) А если использовать с делегатом - то это как раз считай урезанный интерфейс к нему.