我想開發一個使用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