[vtkusers] Inresolved external for QVTKWidget in VTK-8.0.1.
Elvis Stansvik
elvis.stansvik at orexplore.com
Mon Oct 16 05:59:54 EDT 2017
2017-10-16 11:39 GMT+02:00 Zoltan Kovacs <Zoltan.Kovacs at esi-group.com>:
> Dear Dan,
>
> In QtCreator I added a QWidget to the UI form and used "Promote to ..."
> QVTKOpenGLWidget class for it. I also included QVTKOpenGLWidget.h in the
> header file of the application. However, when linking the source I get the
> error message
>
> distortionpage.obj:-1: Fehler: LNK2019: unresolved external symbol
> "__declspec(dllimport) public: __thiscall
> QVTKOpenGLWidget::QVTKOpenGLWidget(class QWidget *,class QFlags<enum
> Qt::WindowType>)"
> (__imp_??0QVTKOpenGLWidget@@QAE at PAVQWidget@@V?$QFlags at W4WindowType@Qt@@@@@Z)
> referenced in function "public: void __thiscall
> Ui_DistortionPage::setupUi(class QWidget *)"
> (?setupUi at Ui_DistortionPage@@QAEXPAVQWidget@@@Z)
>
>
> It seems that the MSVC2013 linker cannot find the library of
> QVTKOpenGLWidget. I searched a library file with a similar name in the
> folder where CMake generated the VTK libraries with Qt support but I could
> not find it. I am just wondering if it is missing or some other library file
> with a completely different name contains this symbol.
The class is part of the vtkGUISupportQt library (on Windows the files
would be vtkGUISupportQt-8.0.lib/dll).
We're using the "promote" functionality in Qt Creator's Design mode to
promote a widget to our custom QVTKOpenGLWidget subclass. It should
work fine to promote to it directly.
Elvis
>
> Regards,
> Zoltan
>
>
>
> Am 10.10.2017 um 19:23 schrieb Dan Lipsa:
>>
>> In Qt Designer you should be able to use QVTKOpenGLWidget by adding first
>> a QOpenGLWidget and then 'Promote to ...' a QVTKOpenGLWidget. So you can
>> build the UI of your Qt application this way.
>>
>> I am not sure what is needed for QtCreator. I don't use that.
>>
>> Hope this helps,
>> Dan
>>
>>
>> On Tue, Oct 10, 2017 at 10:59 AM, Zoltan Kovacs
>> <Zoltan.Kovacs at esi-group.com <mailto:Zoltan.Kovacs at esi-group.com>> wrote:
>>
>> Dear Mike,
>>
>> Thank you very much for your prompt answer. As I wrote to Dan, we
>> have to use QtCreator for the development here. Then I have access
>> only for qmake and I can edit project files for it. If
>> QVTKOpenGLWidget is the only VTK widget class supported for Qt5 then
>> I ave to find out how to insert such an object into the UI form file
>> of QT.
>>
>> Kind regards,
>> Zoltan
>>
>> Am 10.10.2017 um 16:48 schrieb Mike Chinander:
>>
>> Also, when working with VTK, it will be a lot easier to switch
>> to using CMake instead of Qt project files (QtCreator supports
>> CMake). Look at the examples Dan linked to. You will have to
>> update the CMakelists.txt file for Qt. You will probably have to
>> add the following:
>>
>> FIND_PACKAGE(Qt5Core REQUIRED)
>> FIND_PACKAGE(Qt5Widgets REQUIRED)
>>
>> and update the target_link_libraries line(add Qt5::Widget) ,
>> e.g.,:
>>
>> target_link_libraries(QtBarChart Qt5::Widgets ${VTK_LIBRARIES})
>>
>> On Tue, Oct 10, 2017 at 9:33 AM, Dan Lipsa
>> <dan.lipsa at kitware.com <mailto:dan.lipsa at kitware.com>
>> <mailto:dan.lipsa at kitware.com <mailto:dan.lipsa at kitware.com>>>
>> wrote:
>>
>> Zoltan,
>> This is unrelated to the error you are seeing however:
>>
>> For Qt5 you'll need to use QVTKOpenGLWidget rather than
>> QVTKWidget. See
>> https://lorensen.github.io/VTKExamples/site/Cxx/
>> <https://lorensen.github.io/VTKExamples/site/Cxx/>
>> <https://lorensen.github.io/VTKExamples/site/Cxx/
>> <https://lorensen.github.io/VTKExamples/site/Cxx/>>
>> All examples are converted to Qt5. Also, VTK master has a
>> number of
>> examples that have been converted to Qt5: Examples/GUI/Qt
>>
>> Hope this helps,
>> Dan
>>
>>
>> On Tue, Oct 10, 2017 at 10:10 AM, Zoltan Kovacs
>> <Zoltan.Kovacs at esi-group.com
>> <mailto:Zoltan.Kovacs at esi-group.com>
>> <mailto:Zoltan.Kovacs at esi-group.com
>>
>> <mailto:Zoltan.Kovacs at esi-group.com>>>
>>
>> wrote:
>>
>> Dear all,
>>
>> In CMake I generated a solution project of VTK-8.0.1
>> with Qt5
>> support for MSVS2013. After having run the ALL_BUILD
>> and INSTALL
>> projects with the install prefix C:\VTK\8.0.1 in VM2013
>> I could
>> installed the Win32 bit binaries of VTK 8.0.1 in that
>> folder.
>> The header files and the libraries are located in
>> C:\VTK\8.0.1\include\vtk-8.0 and
>> C:\VTK\8.0.1\lib.
>>
>> I copied the file QVTKWidgetPlugin.dll from the VTK
>> binary
>> folders to the plugin folder of QTCreator, which uses
>> QT 5.8
>> msvs2013 32 bit version.
>>
>> Then I set the include and library paths and added all
>> the VTK
>> libary files from C:\VTK\8.0.1\lib for the linker
>> setting in the
>> project file
>> of a QT application in QtCreator:
>>
>> INCLUDEPATH += C:\VTK\8.0.1\include\vtk-8.0
>> LIBS += -LC:\VTK\8.0.1\lib
>>
>> LIBS += -lvtkRenderingLabel-8.0 \
>> -lvtkRenderingLOD-8.0 \
>> -lvtkRenderingOpenGL2-8.0 \
>> -lvtkRenderingQt-8.0 \
>> -lvtkRenderingVolume-8.0 \
>> -lvtkRenderingVolumeOpenGL2-8.0 \
>> -lvtksqlite-8.0 \
>> -lvtksys-8.0 \
>> -lvtkTestingGenericBridge-8.0 \
>> -lvtkTestingIOSQL-8.0 \
>> -lvtkTestingRendering-8.0 \
>> -lvtktiff-8.0 \
>> -lvtkverdict-8.0 \
>> -lvtkViewsContext2D-8.0 \
>> -lvtkViewsCore-8.0 \
>> -lvtkViewsInfovis-8.0 \
>> -lvtkViewsQt-8.0 \
>> -lvtkzlib-8.0 \
>> -lvtkalglib-8.0 \
>> -lvtkChartsCore-8.0 \
>> -lvtkCommonColor-8.0 \
>> -lvtkCommonComputationalGeometry-8.0 \
>> -lvtkCommonCore-8.0 \
>> -lvtkCommonDataModel-8.0 \
>> -lvtkCommonExecutionModel-8.0 \
>> -lvtkCommonMath-8.0 \
>> -lvtkCommonMisc-8.0 \
>> -lvtkCommonSystem-8.0 \
>> -lvtkCommonTransforms-8.0 \
>> -lvtkDICOMParser-8.0 \
>> -lvtkDomainsChemistry-8.0 \
>> -lvtkDomainsChemistryOpenGL2-8.0 \
>> -lvtkexoIIc-8.0 \
>> -lvtkexpat-8.0 \
>> -lvtkFiltersAMR-8.0 \
>> -lvtkFiltersCore-8.0 \
>> -lvtkFiltersExtraction-8.0 \
>> -lvtkFiltersFlowPaths-8.0 \
>> -lvtkFiltersGeneral-8.0 \
>> -lvtkFiltersGeneric-8.0 \
>> -lvtkFiltersGeometry-8.0 \
>> -lvtkFiltersHybrid-8.0 \
>> -lvtkFiltersHyperTree-8.0 \
>> -lvtkFiltersImaging-8.0 \
>> -lvtkFiltersModeling-8.0 \
>> -lvtkFiltersParallel-8.0 \
>> -lvtkFiltersParallelImaging-8.0 \
>> -lvtkFiltersPoints-8.0 \
>> -lvtkFiltersProgrammable-8.0 \
>> -lvtkFiltersSelection-8.0 \
>> -lvtkFiltersSMP-8.0 \
>> -lvtkFiltersSources-8.0 \
>> -lvtkFiltersStatistics-8.0 \
>> -lvtkFiltersTexture-8.0 \
>> -lvtkFiltersTopology-8.0 \
>> -lvtkFiltersVerdict-8.0 \
>> -lvtkfreetype-8.0 \
>> -lvtkGeovisCore-8.0 \
>> -lvtkgl2ps-8.0 \
>> -lvtkglew-8.0 \
>> -lvtkGUISupportQt-8.0 \
>> -lvtkGUISupportQtSQL-8.0 \
>> -lvtkhdf5_hl-8.0 \
>> -lvtkhdf5-8.0 \
>> -lvtkImagingColor-8.0 \
>> -lvtkImagingCore-8.0 \
>> -lvtkImagingFourier-8.0 \
>> -lvtkImagingGeneral-8.0 \
>> -lvtkImagingHybrid-8.0 \
>> -lvtkImagingMath-8.0 \
>> -lvtkImagingMorphological-8.0 \
>> -lvtkImagingSources-8.0 \
>> -lvtkImagingStatistics-8.0 \
>> -lvtkImagingStencil-8.0 \
>> -lvtkInfovisCore-8.0 \
>> -lvtkInfovisLayout-8.0 \
>> -lvtkInteractionImage-8.0 \
>> -lvtkInteractionStyle-8.0 \
>> -lvtkInteractionWidgets-8.0 \
>> -lvtkIOAMR-8.0 \
>> -lvtkIOCore-8.0 \
>> -lvtkIOEnSight-8.0 \
>> -lvtkIOExodus-8.0 \
>> -lvtkIOExport-8.0 \
>> -lvtkIOExportOpenGL2-8.0 \
>> -lvtkIOGeometry-8.0 \
>> -lvtkIOImage-8.0 \
>> -lvtkIOImport-8.0 \
>> -lvtkIOInfovis-8.0 \
>> -lvtkIOLegacy-8.0 \
>> -lvtkIOLSDyna-8.0 \
>> -lvtkIOMINC-8.0 \
>> -lvtkIOMovie-8.0 \
>> -lvtkIONetCDF-8.0 \
>> -lvtkIOParallel-8.0 \
>> -lvtkIOParallelXML-8.0 \
>> -lvtkIOPLY-8.0 \
>> -lvtkIOSQL-8.0 \
>> -lvtkIOTecplotTable-8.0 \
>> -lvtkIOVideo-8.0 \
>> -lvtkIOXML-8.0 \
>> -lvtkIOXMLParser-8.0 \
>> -lvtkjpeg-8.0 \
>> -lvtkjsoncpp-8.0 \
>> -lvtklibharu-8.0 \
>> -lvtklibxml2-8.0 \
>> -lvtkLocalExample-8.0 \
>> -lvtklz4-8.0 \
>> -lvtkmetaio-8.0 \
>> -lvtknetcdf_c++ \
>> -lvtkNetCDF-8.0 \
>> -lvtkoggtheora-8.0 \
>> -lvtkParallelCore-8.0 \
>> -lvtkpng-8.0 \
>> -lvtkproj4-8.0 \
>> -lvtkRenderingAnnotation-8.0 \
>> -lvtkRenderingContext2D-8.0 \
>> -lvtkRenderingContextOpenGL2-8.0 \
>> -lvtkRenderingCore-8.0 \
>> -lvtkRenderingFreeType-8.0 \
>> -lvtkRenderingGL2PSOpenGL2-8.0 \
>> -lvtkRenderingImage-8.0 \
>>
>>
>> However, if I add a QVTKWidget on the UI file of the
>> application, include the file QVTKWidget.h in the
>> header file of
>> the application and I try to link it in QtCreator with
>> the
>> 32-bit VTK and Qt libraries, MSVS2013 (in the toolchain
>> of
>> QtCreator) sends error messages for unresolved external
>> symbols
>> for all the functions/classes belonging to the
>> QVTKWidget, such as
>>
>> distortionpage.obj:-1: Fehler: LNK2019: unresolved
>> external
>> symbol "__declspec(dllimport) public: __thiscall
>> QVTKWidget::QVTKWidget(class QWidget *,class QFlags<enum
>> Qt::WindowType>)"
>>
>> (__imp_??0QVTKWidget@@QAE at PAVQWidget@@V?$QFlags at W4WindowType@Qt@@@@@Z)
>> referenced in function "public: void __thiscall
>> Ui_DistortionPage::setupUi(class QWidget *)"
>> (?setupUi at Ui_DistortionPage@@QAEXPAVQWidget@@@Z)
>>
>>
>> It seems that the linker could not find the libary for
>> the
>> QVTKWidget plugin, which is loaded since I could chose
>> QtWidget
>> from the widget list in the UI form editor in
>> QtCreator. I do
>> not see any ABI issue here since I use the 32 bit
>> mscv2103
>> version of Qt and I also compiled and linked the 32 bit
>> version
>> of VTK libaries and plugin files with MSVS2013. I am
>> wondering
>> if anybody could make VTK-8.1 working with Qt. Thanks a
>> lot.
>>
>> Kind regars,
>> Zoltan
>>
>> Regards,
>> Zoltan
>>
>> Am 09.10.2017 um 07:34 schrieb support at qt.io
>> <mailto:support at qt.io> <mailto:support at qt.io
>> <mailto:support at qt.io>>:
>>
>> Hi Zoltan,
>>
>> I don't know how the widget should be installed or
>> set up in
>> a project, but you could just search for the header
>> file and
>> point INCLUDEPATH to the folder that contains it.
>>
>> Regards,
>> Joni
>>
>> On 06 October 2017 at 18:26:00 EEST
>> Zoltan.Kovacs at esi-group.com <mailto:Zoltan.Kovacs at esi-group.com>
>> <mailto:Zoltan.Kovacs at esi-group.com
>>
>> <mailto:Zoltan.Kovacs at esi-group.com>> wrote:
>>
>> Hi Joni,
>>
>> I see. However I found MSCV2013 32 bit version
>> for Qt
>> 5.8. I install
>> that version and I built the VTK binaries for
>> win32
>> platform with
>> MVS2013. After having copied the VTK plugin
>> file into
>> the plugin folder
>> of QtCreator I could launch it successfully. The
>> QVTKWidget is in the
>> Widget list of QtCreator now. I could insert a
>> QVTKWidget in the UI form
>> as well. The only problem now is that QtCreator
>> cannot
>> find the header
>> file for QVTKWidget. It is not cleat how to set
>> the
>> INCLUDEPATH in the
>> project file since VS2103 did not create a
>> separate
>> include folder in
>> the target folder C:/VTK/bin for the VTK
>> binaries. Only
>> the library
>> files have a separate folder,
>> C:/VTK/bin/lib/Release.
>>
>> Regards,
>> Zoltan
>>
>> Am 06.10.2017 um 12:08 schrieb support at qt.io
>> <mailto:support at qt.io>
>> <mailto:support at qt.io <mailto:support at qt.io>>:
>>
>> Hi Zoltan,
>>
>> On 06 October 2017 at 13:00:00 EEST
>> Zoltan.Kovacs at esi-group.com <mailto:Zoltan.Kovacs at esi-group.com>
>> <mailto:Zoltan.Kovacs at esi-group.com
>>
>> <mailto:Zoltan.Kovacs at esi-group.com>> wrote:
>>
>> Hi Joni,
>>
>> Thank you very much for your answer.
>> Then I try
>> to install everything
>> from scratch. The only prolem is I have
>> only
>> MSVC 2103 and the only
>> option in the selection list of the
>> online
>> installer for MSVC 2013 is
>> the 64 bit version. Is there somewhere an
>> installer on your website wich
>> provides a relatively new Qt version
>> with MSVC
>> 2103 32 bit version?
>> Thank you very much for your help.
>>
>>
>> No, but you could compile it from source
>> yourself.
>> However, note that you cannot build plugins
>> for new
>> Qt Creator with MSVC 2013 as it uses
>> different ABI.
>> You could use MSVC 2015 or MSVC 2017.
>>
>> Or you could build 64bit version of Qt
>> Creator from
>> source with that Qt version you have
>> installed.
>>
>> Regards,
>> Joni
>> --
>> Joni Poikelin
>> Software Engineer,
>> The Qt Company
>> –
>> FAQs -
>> https://wiki.qt.io/KnowledgeBase:SupportFAQ
>> <https://wiki.qt.io/KnowledgeBase:SupportFAQ>
>>
>> <https://wiki.qt.io/KnowledgeBase:SupportFAQ
>> <https://wiki.qt.io/KnowledgeBase:SupportFAQ>>
>>
>> --
>> Joni Poikelin
>> Software Engineer,
>> The Qt Company
>> –
>> FAQs - https://wiki.qt.io/KnowledgeBase:SupportFAQ
>> <https://wiki.qt.io/KnowledgeBase:SupportFAQ>
>> <https://wiki.qt.io/KnowledgeBase:SupportFAQ
>> <https://wiki.qt.io/KnowledgeBase:SupportFAQ>>
>>
>> _______________________________________________
>> Powered by www.kitware.com <http://www.kitware.com>
>> <http://www.kitware.com>
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>> <http://www.kitware.com/opensource/opensource.html>
>> <http://www.kitware.com/opensource/opensource.html
>> <http://www.kitware.com/opensource/opensource.html>>
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>> <http://www.vtk.org/Wiki/VTK_FAQ>
>> <http://www.vtk.org/Wiki/VTK_FAQ
>> <http://www.vtk.org/Wiki/VTK_FAQ>>
>>
>> Search the list archives at:
>> http://markmail.org/search/?q=vtkusers
>> <http://markmail.org/search/?q=vtkusers>
>> <http://markmail.org/search/?q=vtkusers
>> <http://markmail.org/search/?q=vtkusers>>
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/vtkusers
>> <http://public.kitware.com/mailman/listinfo/vtkusers>
>> <http://public.kitware.com/mailman/listinfo/vtkusers
>> <http://public.kitware.com/mailman/listinfo/vtkusers>>
>>
>>
>>
>> _______________________________________________
>> Powered by www.kitware.com <http://www.kitware.com>
>> <http://www.kitware.com>
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>> <http://www.kitware.com/opensource/opensource.html>
>> <http://www.kitware.com/opensource/opensource.html
>> <http://www.kitware.com/opensource/opensource.html>>
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ
>> <http://www.vtk.org/Wiki/VTK_FAQ>
>> <http://www.vtk.org/Wiki/VTK_FAQ
>> <http://www.vtk.org/Wiki/VTK_FAQ>>
>>
>> Search the list archives at:
>> http://markmail.org/search/?q=vtkusers
>> <http://markmail.org/search/?q=vtkusers>
>> <http://markmail.org/search/?q=vtkusers
>> <http://markmail.org/search/?q=vtkusers>>
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/vtkusers
>> <http://public.kitware.com/mailman/listinfo/vtkusers>
>> <http://public.kitware.com/mailman/listinfo/vtkusers
>> <http://public.kitware.com/mailman/listinfo/vtkusers>>
>>
>>
>>
>>
>> _______________________________________________
>> Powered by www.kitware.com <http://www.kitware.com>
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>> <http://www.kitware.com/opensource/opensource.html>
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ <http://www.vtk.org/Wiki/VTK_FAQ>
>>
>> Search the list archives at:
>> http://markmail.org/search/?q=vtkusers
>> <http://markmail.org/search/?q=vtkusers>
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/vtkusers
>> <http://public.kitware.com/mailman/listinfo/vtkusers>
>>
>> _______________________________________________
>> Powered by www.kitware.com <http://www.kitware.com>
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>> <http://www.kitware.com/opensource/opensource.html>
>>
>> Please keep messages on-topic and check the VTK FAQ at:
>> http://www.vtk.org/Wiki/VTK_FAQ <http://www.vtk.org/Wiki/VTK_FAQ>
>>
>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>> <http://markmail.org/search/?q=vtkusers>
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/vtkusers
>> <http://public.kitware.com/mailman/listinfo/vtkusers>
>>
>>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Search the list archives at: http://markmail.org/search/?q=vtkusers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtkusers
More information about the vtkusers
mailing list