Results 1 to 4 of 4

Thread: Compilation error wen using VTK in QT4.4

  1. #1
    Join Date
    Dec 2008
    Posts
    68

    Default Compilation error wen using VTK in QT4.4

    Hi,

    I got the following compilation error when I compile my project in Visual Studio 2008. The same code is compiled successfully in VS2003.net.
    \tmp\moc\moc_QVTKWidget.cpp(56) : error C2491: 'QVTKWidget::staticMetaObject' : definition of dllimport static data member not allowed
    Could anyone let me know what the problem is?

    Thank you!

  2. #2
    Join Date
    Dec 2008
    Posts
    68

    Default Re: Compilation error wen using VTK in QT4.4

    The QVTKWidget.h / .cpp are all from VTK4.4.

    Here is the complete list of warnings and errors.



    1>moc_QVTKWidget.cpp
    1>.\tmp\moc\moc_QVTKWidget.cpp(56) : warning C4273: 'staticMetaObject' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(62) : see previous definition of 'public: static QMetaObject const QVTKWidget::staticMetaObject'
    1>.\tmp\moc\moc_QVTKWidget.cpp(56) : error C2491: 'QVTKWidget::staticMetaObject' : definition of dllimport static data member not allowed
    1>.\tmp\moc\moc_QVTKWidget.cpp(62) : warning C4273: 'QVTKWidget::metaObject' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(62) : see previous definition of 'metaObject'
    1>.\tmp\moc\moc_QVTKWidget.cpp(67) : warning C4273: 'QVTKWidget::qt_metacast' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(62) : see previous definition of 'qt_metacast'
    1>.\tmp\moc\moc_QVTKWidget.cpp(75) : warning C4273: 'QVTKWidget::qt_metacall' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(62) : see previous definition of 'qt_metacall'
    1>.\tmp\moc\moc_QVTKWidget.cpp(124) : warning C4273: 'QVTKWidget::mouseEvent' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(144) : see previous definition of 'mouseEvent'
    1>.\tmp\moc\moc_QVTKWidget.cpp(131) : warning C4273: 'QVTKWidget::cachedImageDirty' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(149) : see previous definition of 'cachedImageDirty'
    1>.\tmp\moc\moc_QVTKWidget.cpp(137) : warning C4273: 'QVTKWidget::cachedImageClean' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(153) : see previous definition of 'cachedImageClean'
    1>.\tmp\moc\moc_QVTKWidget.cpp(160) : warning C4273: 'staticMetaObject' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(257) : see previous definition of 'public: static QMetaObject const QVTKInteractor::staticMetaObject'
    1>.\tmp\moc\moc_QVTKWidget.cpp(160) : error C2491: 'QVTKInteractor::staticMetaObject' : definition of dllimport static data member not allowed
    1>.\tmp\moc\moc_QVTKWidget.cpp(166) : warning C4273: 'QVTKInteractor::metaObject' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(257) : see previous definition of 'metaObject'
    1>.\tmp\moc\moc_QVTKWidget.cpp(171) : warning C4273: 'QVTKInteractor::qt_metacast' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(257) : see previous definition of 'qt_metacast'
    1>.\tmp\moc\moc_QVTKWidget.cpp(181) : warning C4273: 'QVTKInteractor::qt_metacall' : inconsistent dll linkage
    1> c:\pmri\vpd\src\visualization\tmp\moc\../../QVTKWidget.h(257) : see previous definition of 'qt_metacall'
    Thank you!

  3. #3
    Join Date
    Feb 2006
    Location
    Oslo, Norway
    Posts
    6,264
    Thanks
    36
    Thanked 1,519 Times in 1,389 Posts
    Qt products
    Qt4
    Platforms
    MacOS X Unix/X11 Windows Symbian S60 Maemo/MeeGo

    Default Re: Compilation error wen using VTK in QT4.4

    Quote Originally Posted by richardander View Post
    The QVTKWidget.h / .cpp are all from VTK4.4.
    Did you include the sources to your project? If so, you might want to remove the export macro from QVTKWidget. The export macro is there because it was supposed to be used as a library.
    J-P Nurmi

  4. #4
    Join Date
    Dec 2008
    Posts
    68

    Default Re: Compilation error wen using VTK in QT4.4

    You hit the exact point! It works. But, how do you know the existence of "export macro from QVTKWidget" from the warning message?

    Though the compilation passes, the linking didn't pass with error messages below associated with vtkRendering.lib and vtkCommon.lib. With the same setting, the compilation works in VS2003.net.
    BTW, for the library used in my application, do I need to compile them in VS2008 again if the my application is compiled in VS2008?

    Thank you!


    Qt Code:
    1. 1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??$?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z) already defined in Cryptlib.lib(dll.obj)
    2. 1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl std::getline<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_istream<char,struct std::char_traits<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z) already defined in Cryptlib.lib(dll.obj)
    3. 1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl std::operator>><char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_istream<char,struct std::char_traits<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (??$?5DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z) already defined in Cryptlib.lib(dll.obj)
    4. 1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl std::operator+<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,char const *)" (??$?HDU?$char_traits@D@std@@V?$allocator@D@1@@std@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@ABV10@PBD@Z) already defined in Cryptlib.lib(dll.obj)
    5. 1>Visualization.lib(MRAImageData.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    6. 1>dcmdata.lib(dcobject.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    7. 1>dcmdata.lib(dcvrat.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    8. 1>dcmdata.lib(dcdict.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    9. 1>dcmdata.lib(dcbytstr.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    10. 1>vtkCommon.lib(vtkOStreamWrapper.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    11. 1>vtkCommon.lib(vtkLargeInteger.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    12. 1>vtkRendering.lib(vtkRenderWindowInteractor.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    13. 1>vtkRendering.lib(vtkInteractorObserver.obj) : error LNK2005: "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl std::operator<<<struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> > &,char)" (??$?6U?$char_traits@D@std@@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@D@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
    To copy to clipboard, switch view to plain text mode 

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.