Название: Помогите соединить Qt и GDAL Отправлено: swbor от Август 09, 2017, 20:46 Сижу под Windows. Пользуюсь Qt 5.6.1 с Mingw скачанный с оф сайта.. Безуспешно пытаюсь прикрутить GDAL 2.2.1.
Скачал исходники GDAL c оф сайта, скачал mingw с помощью онлайн-инсталятора. Распаковал GDAL и натравил на него msys набрав: Код: ./configure образовались 4 папки, в которых были найдены в папке lib: libgdal.la, libgdal.a, libgdal.dll.a +файл libgdal-20.dll в папке bin(там же куча exe-файлов) и инклюды в отдельной папке. В файле проекта прописал Код: LIBPATH+= c:/Programming/GDAL/Maked/lib/ Цитировать #include "gdal.h" В конструктор формы добавил #include "gdal_priv.h" Цитировать GDALDataset *poDataset; У меня все собралось, но при запуске с дебагом пишет During startup program exited with code 0xc0000135 GDALAllRegister(); Файл с библиотекой libgdal-20.dll клал и в папку где генерится exe файл и в папку выше и в windows и в system32 и в папку с самой либой. Менял всячески название dll файла на gdal, gdal_i и т.п. - ничего не помогает. Если что вообще ничего не понимаю ни в динамических библиотеках, ни в в их сборке, опыта нет,хотя с qt дружу - очень нравится система. Помогите пожалуйста советом что надо поправить, чтобы GDAL заработал? Только поподробней расписывайте плиз, я в этих делах неопытный совсем. Пробовал еще использовать MSYS2 - там даже собрать библиотеку не получилось, на ./autogen.sh ругается. Название: Re: Помогите соединить Qt и GDAL Отправлено: Swa от Август 09, 2017, 23:09 Когда вы линкуете библиотеку не нужно писать "lib" перед её названием, т.е. должно быть
Код: LIBS += -lgdal-20 Также эта dll должна лежать в папке с вашим exe файлом. Название: Re: Помогите соединить Qt и GDAL Отправлено: swbor от Август 10, 2017, 10:39 Когда вы линкуете библиотеку не нужно писать "lib" перед её названием, т.е. должно быть Спасибо за ответ! Он натолкнул меня на мысль как решить проблему. Оказывается я искал не совсем там.Код: LIBS += -lgdal-20 Также эта dll должна лежать в папке с вашим exe файлом. Во первых я прописал подключение Цитировать LIBS += -lgdal с -20 на конце не работало вообще, он библиотеку не видел.Но само по себе это ничего не изменило. Тогда, я решил скомпилировать Релиз-версию и запустить экзешник напрямую, без использования qtcreator. Естественно, он стал ругаться на отсутствующие библиотеки. Я воспользовался qtwindeploy - добавил недостающие. После, он поругался на libiconv-2.dll - нашел в наборе mingw - добавил ее. Поругался на libstdc++-6.dll - не найдена точка входа. - заменил на такую же из папки mingw/bin. - и все заработало, в том числе при запуске из под qt-creator. :) Итого, ему не хватало какой-то другой библиотеки рядом с exe-файлом. Сейчас буду пытаться выяснить какой именно) Название: Re: Помогите соединить Qt и GDAL Отправлено: ssoft от Август 10, 2017, 11:35 http://www.dependencywalker.com/ в помощь ;)
Название: Re: Помогите соединить Qt и GDAL Отправлено: swbor от Август 10, 2017, 11:51 http://www.dependencywalker.com/ в помощь ;) Спасибо,где-то уже про него слышал, скачаю)После, он поругался на libiconv-2.dll - нашел в наборе mingw - добавил ее. Поругался на libstdc++-6.dll - не найдена точка входа. - заменил на такую же из папки mingw/bin. - и все заработало, в том числе при запуске из под qt-creator. :) Экспериментальным путем выяснил, что также необходимо класть в папку с исполняемым файлом помимо gdal-20.dll еще и libstdc++-6.dll и libiconv-2.dll из mingw/bin - mingw тот который отдельно устанавливается и с помощью которого собирается библиотека . Без это не запускается никак. Два дня танцев с бубном вокруг кода, самой сборки и собранной библиотеки и проблема решена свежим взглядом с утра с другого угла ;DИтого, ему не хватало какой-то другой библиотеки рядом с exe-файлом. Сейчас буду пытаться выяснить какой именно) |