我想开发一个使用QGIS API的QT C++应用程序,但我无法管理Qt Creator来编译代码。我已经阅读了gis.stackexchange和其他来源的几个主题。信息大多是过时的,我还没有找到解决方案。我需要的是关于以下项目的兼容性的总体指导方针,帮助我找到正确的组合:解决:使用QGIS API的QT C++应用程序
- Qt版本:试过4.8.6和5.9。
- Qt编译器:试过MinGW,VS2008 Express(Qt 4.8.6)和VS Community 2017(Qt 5.9)
- QGIS版本:尝试过2.14到2.18。
- QGIS编译:我只使用常规OSGeo4w安装程序,AFAIK QGIS使用Qt4和MSVC编译。我试图用MinGW从源代码编译QGIS,但没有成功(再次,版本兼容性问题)。
- Windows版本:我正在使用Windows 10 64位。 OSGeo4W或OSGeo4W64。
的Qt工程确定在它自己的图书馆每一个案件,但是当我尝试导入QGIS库它给建筑物时,即使智能感知工作正常,因为它承认QgsApplication作为qgsapplication成员的“未定义的引用”错误。H。
以下只是一个测试我无法工作。我的亲文件是:
QT += core gui xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = QgisWindow
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# QGIS
INCLUDEPATH += "C:/OSGeo4W64/apps/qgis-rel-dev/include"
INCLUDEPATH += "C:/OSGeo4W64/include"
LIBS += -L"C:/OSGeo4W64/apps/qgis-rel-dev/lib" -lqgis_core -lqgis_gui
DEFINES+=CORE_EXPORT=
DEFINES+=GUI_EXPORT=
# QGIS
main.cpp中是:
#include <QApplication>
#include <qgsapplication.h>
int main(int argc, char *argv[])
{
QgsApplication app(argc, argv, true);
QgsApplication::setPrefixPath("C:/OSGeo4W64/apps/qgis-dev", true);
int retval = app.exec();
QgsApplication::exitQgis();
return retval;
}
然后它不能建立/编译蒙山此错误:
main.cpp:20: error: undefined reference to `QgsApplication::QgsApplication(int&, char**, bool, QString const&, QString const&)'
我其实是一个移植PyQgis应用程序,我已经做了两年前,因为我相当新的Qt造物主我卡在他开始。
它只是一个C++的问题,它意味着没有定义类的类型。这需要包括在内。如果这不在qgsapplication.h中,那么我们不知道。也许有一个需要提供的名称空间。这是一个编程语言的问题层面。除此之外,没有人应该提供项目的绝对路径。 – AlexanderVX