2

我正在尝试使用Qt 5.9.1创建自定义 QGIS 桌面应用程序

我已经下载了 OSGeo4W (x64) 地理空间软件集和 Github C++ QGIS 示例,但我在编译时遇到了错误:

Cannot open include file: 'qgsmapcanvas.h': No such file or directory

实际上以上头文件都不在 OSGeo4W 文件夹下:

#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgssinglesymbolrenderer.h>
#include <qgsmaplayerregistry.h>
#include <qgsrasterlayer.h>
#include <qgsmapcanvas.h>

但是..它们不应该在 dll 库中(例如 qgis_core、qgis_gui ...)吗?

无论如何,这是我的*.pro文件:

TEMPLATE = app
TARGET = qgis_example4
QT = sql network svg gui core xml
LANGUAGE= C++

INCLUDEPATH +=  "C:\\OSGeo4W64\\include"

LIBS += -L"C:\\OSGeo4W64\\apps\\qgis\\bin" -lqgis_core -lqgis_gui -lgdal_i -lgeos_c

DEFINES+=CORE_EXPORT=__declspec(dllexport)
DEFINES+=GUI_EXPORT=__declspec(dllexport)

CONFIG += qt gui exceptions stl warn_on debug thread

RESOURCES += resources.qrc

FORMS += mainwindowbase.ui

HEADERS = mainwindow.h

SOURCES = main.cpp \
              mainwindow.cpp

PS:stackiverflow上有一个类似的问题,但我重复了一遍,因为给出的答案没有给出解决方案

4

1 回答 1

0

已解决:可以在项目的“ qgis-dev ”分支中找到所需的头文件。

OSGeo4W:对于由于某种原因不能使用 OSGeo4W 或只是喜欢它的用户,还有来自 OSGeo4W 的 qgis-dev 每周快照作为独立安装程序

安装后,您可以在以下位置找到标题:

C:/Program Files/QGIS 2.99/apps/qgis-dev/include

所以这是我的.pro文件

TEMPLATE = app
TARGET = qgis_example4
QT = sql network svg gui core xml
LANGUAGE= C++


INCLUDEPATH += "C:/Program Files/QGIS 2.99/include"
INCLUDEPATH += "C:/Program Files/QGIS 2.99/apps/qgis-dev/include"

LIBS += -L"C:/Program Files/QGIS 2.99/apps/qgis-dev/bin" -lqgis_core -lqgis_gui

DEFINES+=CORE_EXPORT=__declspec(dllexport)
DEFINES+=GUI_EXPORT=__declspec(dllexport)

CONFIG += qt gui exceptions stl warn_on debug thread

RESOURCES += resources.qrc

FORMS += mainwindowbase.ui

HEADERS = mainwindow.h

SOURCES = main.cpp \
          mainwindow.cpp

虽然文件现在存在,但我仍然无法运行QGIS 示例。也许我会转向其他示例,或者我会做我的自定义基本应用程序。

于 2017-09-12T15:09:04.567 回答