[Insight-users] QtITK Bluiding problem (linking problem) please help

Adem breckon adem.breckon at gmail.com
Fri Nov 8 10:43:59 EST 2013


Hi

I want to run QtITK ( taken from InsightApplications) as I want to do a Qt
based Gui for my itk application.

I used the following CMakeLists file:

PROJECT(myProject)



FIND_PACKAGE ( ITK)

IF ( ITK_FOUND)

INCLUDE( ${USE_ITK_FILE} )

ENDIF( ITK_FOUND)





# Find QT

FIND_PACKAGE( Qt4   REQUIRED )

#INCLUDE( ${QT_USE_FILE} )



INCLUDE_DIRECTORIES(

  ${QT_INCLUDES}

  ${QT_INCLUDE_DIR}

  ${QT_QTGUI_INCLUDE_DIR}

  ${QT_QTCORE_INCLUDE_DIR}

  ${CMAKE_CURRENT_BINARY_DIR}

  ${CMAKE_CURRENT_SOURCE_DIR}

  )





LINK_LIBRARIES (QtITK

${ITK_LIBRARIES}

${QT_LIBRARIES}

${QT_QTCORE_LIBRARY}

${QT_QTGUI_LIBRARY}

)





SET( QtITK.cpp itkQtProgressBar.cxx qtITK.cxx)



SET( QtITK_MOC_SRCS itkQtAdaptor.h itkQtLightIndicator.h)



#IF(QT_WRAP_CPP)

 # QT_WRAP_CPP(QtITK QtITK_SRCS QtITK_MOC_SRCS)

#ENDIF(QT_WRAP_CPP



ADD_EXECUTABLE( QtITK QtITK.cpp)



I successfully configured it using cmake and when I try to build the
solution using VS 2008 I got the following link errors:



Warning               1              warning C4996: 'std::copy': Function
call with parameters that may be unsafe - this call relies on the caller to
check that the passed values are correct. To disable this warning, use
-D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++
'Checked Iterators'
c:\tools\itk_4.4.2\itk_4.4.2\modules\io\imagebase\include\itkImageFileReader.hxx
439         QtITK

Warning               2              warning C4996: 'std::copy': Function
call with parameters that may be unsafe - this call relies on the caller to
check that the passed values are correct. To disable this warning, use
-D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++
'Checked Iterators'
c:\tools\itk_4.4.2\itk_4.4.2\modules\core\common\include\itkImportImageContainer.hxx
72           QtITK

Error      3              error LNK2019: unresolved external symbol
"public: void __thiscall itk::QtProgressBar::Observe(class itk::Object *)"
(?Observe at QtProgressBar@itk@@QAEXPAVObject at 2@@Z) referenced in function
_main        QtITK.obj                QtITK

Error      4              error LNK2019: unresolved external symbol
"public: __thiscall itk::QtProgressBar::QtProgressBar(class QWidget *)"
(??0QtProgressBar at itk@@QAE at PAVQWidget@@@Z) referenced in function _main
QtITK.obj                QtITK

Error      5              error LNK2001: unresolved external symbol
"public: virtual struct QMetaObject const * __thiscall
itk::QtTranslator::metaObject(void)const " (?metaObject at QtTranslator@itk@
@UBEPBUQMetaObject@@XZ) QtITK.obj                QtITK

Error      6              error LNK2001: unresolved external symbol
"public: virtual void * __thiscall itk::QtTranslator::qt_metacast(char
const *)" (?qt_metacast at QtTranslator@itk@@UAEPAXPBD at Z)     QtITK.obj
QtITK

Error      7              error LNK2001: unresolved external symbol
"public: virtual int __thiscall itk::QtTranslator::qt_metacall(enum
QMetaObject::Call,int,void * *)" (?qt_metacall at QtTranslator@itk@
@UAEHW4Call at QMetaObject@@HPAPAX at Z)             QtITK.obj             QtITK

Error      8              error LNK2019: unresolved external symbol
"protected: void __thiscall itk::QtTranslator::Signal(void)"
(?Signal at QtTranslator@itk@@IAEXXZ) referenced in function "public: void
__thiscall itk::QtSignalAdaptor::EmitSignal(void)"
(?EmitSignal at QtSignalAdaptor@itk@@QAEXXZ)              QtITK.obj
QtITK

Error      9              error LNK2001: unresolved external symbol
"public: virtual struct QMetaObject const * __thiscall
itk::QtLightIndicator::metaObject(void)const " (?metaObject at QtLightIndicator
@itk@@UBEPBUQMetaObject@@XZ)                QtITK.obj             QtITK

Error      10           error LNK2001: unresolved external symbol "public:
virtual void * __thiscall itk::QtLightIndicator::qt_metacast(char const *)"
(?qt_metacast at QtLightIndicator@itk@@UAEPAXPBD at Z)      QtITK.obj
QtITK

Error      11           error LNK2001: unresolved external symbol "public:
virtual int __thiscall itk::QtLightIndicator::qt_metacall(enum
QMetaObject::Call,int,void * *)" (?qt_metacall at QtLightIndicator@itk@
@UAEHW4Call at QMetaObject@@HPAPAX at Z)     QtITK.obj             QtITK

Error      12           fatal error LNK1120: 9 unresolved externals
C:\MyCodes\QT_GUI5\Bin\Debug\QtITK.exe    QtITK



Of course I have putt all the files needed in my bin directory:
itkQtProgressBar.cxx,
itkQtProgressBar.h itkQtAdaptor.h, itkQtLightIndicator.h


but still got this linking problem. I used  qt4.8.5 and itk 4.4.2
version,  Cmake
(2.8.11.2),  VS. 2008.

I am using QtITK from InsightApplications-4.4.0.


I searched in itk mailing list and I found two messages asking the same
question

in http://www.itk.org/pipermail/insight-users/2004-July/009627.html

they suggest that CMake  not wrapping cpp for Qt.

As you can see in my CMakeLists file, I already comment out that but still
having the same errors.



In http://www.itk.org/pipermail/insight-users/2005-November/015684.html

The author said that moc has not run properly on the appropriate
headers (itkQtAdaptor.h,
itkQtLightIndicator.h) so he has done this manually and the problem is
resolved.



I don’t really know the meaning of that and how to do it.



Could you please help as I am really stack in using QT with itk. No
application is running for me. I have already posted my problem with
QtImageViewer
and I still waiting or help.

Does anyone have a working application wusing itk and QT…please help.

Adem.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20131108/261db03a/attachment-0001.htm>


More information about the Insight-users mailing list