【问题标题】:Cannot find qgsapplication.h and other header files找不到 qgsapplication.h 和其他头文件
【发布时间】:2015-01-11 06:55:35
【问题描述】:

我正在使用 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=
}

在我的程序中,找不到以下标题:

#include ""

#include ""

#include ""

#include ""

#include ""

#include ""

并且从安装的qgis文件夹中,我找不到上述任何头文件。

感谢任何帮助。

【问题讨论】:

    标签: c++ qt qgis


    【解决方案1】:

    要调试您的应用程序,我认为您必须在项目文件中添加 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=
    }
    

    【讨论】:

    • TestQgis3.pro(28):CONFIG(config) 需要一个或两个参数。这是我在控制台中遇到的错误。
    【解决方案2】:

    第 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 模式

    【讨论】:

    • 当我尝试测试它时,我总是得到以下错误:劣质停止,因为它触发了异常。因 0x670e71f2 处的异常而在线程 0 中停止,代码:0xc0000005:在 0x0 处读取访问冲突,标志 = 0x0。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多