Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. 3rd Party Software
  4. Trying to make QT + QGIS working
Qt 6.11 is out! See what's new in the release blog

Trying to make QT + QGIS working

Scheduled Pinned Locked Moved 3rd Party Software
3 Posts 2 Posters 3.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    Garvane
    wrote on last edited by
    #1

    Hi everyone,
    I'm mostly a Java programmer, I worked on C++ many years ago, and knowing this my project manager has asked me to create a little app in QT that can open a shape file, using QGIS.
    But I'm encountering some difficulties.

    I have downloaded the QGIS tutorials of Tim Sutton from GitHub (https://github.com/qgis/QGIS-Code-Examples) and I began working on this: 4_adding_rasters_to_canvas.

    I have downloaded QGIS with all the sources, version 1.8, and QT4 (first I tried QGIS 2.0 and QT5, but I have read that there is no compatibility, so I have tried to reproduce the original envinronment of the tutorials). I have open the project, edited the .pro file to include folders and libraries.
    I have downloaded OSGEO4W64 (I am on Win7) with all the sources.

    I have configured the kit under QT4, using as a compiler Microsoft Visual C++ 10.0 (the only one that doesn't make appear the red error icon in the kits list).

    I have configured CMake with the path to the CMake 2.8 executable.

    When I build the project, I see the following errors:

    @main.obj:-1: error: LNK2019: unresolved external symbol "public: virtual __thiscall QgsApplication::~QgsApplication(void)" (??1QgsApplication@@UAE@XZ) referenced in function _main
    main.obj:-1: error: LNK2019: unresolved external symbol "public: __thiscall QgsApplication::QgsApplication(int &,char * *,bool,class QString)" (??0QgsApplication@@QAE@AAHPAPAD_NVQString@@@Z) referenced in function _main
    @
    I have triede many things and read threads and docs online to solve this issue, but I want to start again from this point to be sure of what I'm doing.

    My (first for now) question is: I need to compile the QGIS sources under Visual C++ before building the project, because QT can't see the qgis dll?

    Thank for your time.

    Bye,
    Ivan A.

    1 Reply Last reply
    0
    • G Offline
      G Offline
      Garvane
      wrote on last edited by
      #2

      Ok, it seems that I've managed to solve the issue: I've recompiled the 1.8 sources with cmake-gui, and linked the libraries in the build folder.
      In this way QT sees the libraries.

      But now I have another issue. There is this code in the tutorial

      @QgsMapLayerRegistry::instance()->addMapLayer(mypLayer, TRUE);@

      (mypLayer is a QgsRasterLayer*)

      and when building it causes the following error:

      @error: LNK2019: unresolved external symbol "public: class QgsMapLayer * __thiscall QgsMapLayerRegistry::addMapLayer(class QgsMapLayer *,bool,bool)"@

      I have read that the addMapLayer method is deprecated, so I have replaced it with the method addMapLayers (according to Tim Sutton: http://osgeo-org.1560.x6.nabble.com/Display-raster-layer-on-own-Map-Canvas-td5002935.html ).

      So I used:

      @QgsMapLayerRegistry::instance()->addMapLayers(QList<QgsMapLayer*>() << mypLayer);@

      and the error slightly change but doesn't go away...

      @error: LNK2019: unresolved external symbol "public: class QList<class QgsMapLayer *> __thiscall QgsMapLayerRegistry::addMapLayers(class QList<class QgsMapLayer *>,bool,bool)"@

      It's the proper syntax (I found examples on the internet)? There is another way to do this?

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #3

        Hi and welcome to devnet,

        I don't know whether QGIS has several libraries or not. In the first case, are you sure you are linking to all required libraries ?

        Hope it helps

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved