Я использую QtCreator и QGIS 2.6 для создания отдельного приложения на C ++.
Проблема, с которой я сталкиваюсь, заключается в том, что проект не может найти все необходимые заголовочные файлы.
Мой .pro файл выглядит следующим образом:
QT += core gui xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = TestQgis2
TEMPLATE = app
SOURCES += main.cpp
#HEADERS +=YOUR HEADERS
#FORMS += YOUR FORMS
#RESOURCES += images/images.qrc
win32:CONFIG(Release, Debug|Release) {
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/lib/" -lQtCore4
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/lib/" -lQtGui4
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/lib/" -lQtXml4
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/apps/qgis/bin/" -lqgis_core
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/apps/qgis/bin/" -lqgis_gui
}
else:win32:CONFIG(Debug, Debug|Release) {
PRE_TARGETDEPS += C:/Program Files (x86)/QGIS Brighton/lib/QtCored4.lib
PRE_TARGETDEPS += C:/Program Files (x86)/QGIS Brighton/lib/QtGuid4.lib
PRE_TARGETDEPS += C:/Program Files (x86)/QGIS Brighton/lib/QtXmld4.lib
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/lib/" -lQtCored4
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/lib/" -lQtGuid4
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/lib/" -lQtXmld4
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/apps/qgis/bin/" -lqgis_core
LIBS += -L"C:/Program Files (x86)/QGIS Brighton/apps/qgis/bin/" -lqgis_gui
}
win32:{
INCLUDEPATH += C:/Program Files (x86)/QGIS Brighton/include
DEPENDPATH += C:/Program Files (x86)/QGIS Brighton/include
# INCLUDEPATH += C:/OSGeo4W/apps/qgis-dev/include
# DEPENDPATH += C:/OSGeo4W/apps/qgis-dev/include
DEFINES += GUI_EXPORT=__declspec(dllimport) CORE_EXPORT=__declspec(dllimport)
}
unix {
LIBS += -L/usr/local/lib/ -lqgis_core -lqgis_gui
LIBS += -L/usr/local/lib/qgis/plugins/ -lgdalprovider
INCLUDEPATH += /usr/local/include/qgis
DEFINES += GUI_EXPORT= CORE_EXPORT=
}
И в моей программе ни один из следующих заголовков не найден:
#включают «<«Qgsapplication.h»>»
#включают «<«Qgsproviderregistry.h»>»
#включают «<«Qgssinglesymbolrenderer.h»>»
#включают «<«Qgsmaplayerregistry.h»>»
#включают «<«Qgsvectorlayer.h»>»
#включают «<«Qgsmapcanvas.h»>»
А из установленной папки qgis я не могу найти ни один из указанных выше заголовочных файлов.
Любая помощь приветствуется.
Я думаю, что для отладки вашего приложения вы должны добавить режим RelWithDebInfo в ваш файл проекта:
QT += core gui xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = TestQgis2
TEMPLATE = app
SOURCES += main.cpp
#HEADERS +=YOUR HEADERS
#FORMS += YOUR FORMS
#RESOURCES += images/images.qrc
win32:CONFIG(Release, Debug|Release, RelWithDebInfo) {
LIBS += -L"C:/OSGeo4W/apps/qgis/lib/" -lQtCore4
LIBS += -L"C:/OSGeo4W/apps/qgis/lib/" -lQtGui4
LIBS += -L"C:/OSGeo4W/apps/qgis/lib/" -lQtXml4
LIBS += -L"C:/OSGeo4W/apps/qgis/bin/" -lqgis_core
LIBS += -L"C:/OSGeo4W/apps/qgis/bin/" -lqgis_gui
}
else:win32:CONFIG(Debug, Debug|Release, RelWithDebInfo) {
PRE_TARGETDEPS += C:/OSGeo4W/lib/QtCored4.lib
PRE_TARGETDEPS += C:/OSGeo4W/lib/QtGuid4.lib
PRE_TARGETDEPS += C:/OSGeo4W/lib/QtXmld4.lib
LIBS += -L"C:/OSGeo4W/lib/" -lQtCored4
LIBS += -L"C:/OSGeo4W/lib/" -lQtGuid4
LIBS += -L"C:/OSGeo4W/lib/" -lQtXmld4
LIBS += -L"C:/OSGeo4W/apps/qgis/bin/" -lqgis_core
LIBS += -L"C:/OSGeo4W/apps/qgis/bin/" -lqgis_gui
}
win32:{
INCLUDEPATH += C:/OSGeo4W/include
DEPENDPATH += C:/OSGeo4W/include
# INCLUDEPATH += C:/OSGeo4W/apps/qgis/include
# DEPENDPATH += C:/OSGeo4W/apps/qgis/include
DEFINES += GUI_EXPORT=__declspec(dllimport) CORE_EXPORT=__declspec(dllimport)
}
unix {
LIBS += -L/usr/local/lib/ -lqgis_core -lqgis_gui
LIBS += -L/usr/local/lib/qgis/plugins/ -lgdalprovider
INCLUDEPATH += /usr/local/include/qgis
DEFINES += GUI_EXPORT= CORE_EXPORT=
}
какая линия 28?
если это так:
win32:CONFIG(Release, Debug|Release, RelWithDebInfo)
Вы можете заменить его на:
win32:CONFIG(Release, RelWithDebInfo|Release)
и заменить это:
else:win32:CONFIG(Debug, Debug|Release, RelWithDebInfo)
с:
else:win32:CONFIG(RelWithDebInfo, RelWithDebInfo|Release)
потому что библиотеки Qgis ant Qt скомпилированы с режимом Release, поэтому, если вы хотите отлаживать ваше приложение, вы должны использовать режим RelWithDebInfo