Intégration de VTK 5.6 dans Qt Creator
Bonjour à tous.
Après avoir passé plusieurs semaines sur ce problème, je vous en fais part car je commence à être à court de solutions...
Je souhaiterais pouvoir intégrer VTK dans Qt Creator afin d'y lire une image DICOM.
J'avais dans un premier temps réalisé l'installation de VTK, sa construction, avec CMake "générateur Visual Studio 9 2008" et donc Visual 9. Problème (je pense), j'ai compilé Qt avec MinGW. Après l'intégration dans mon .pro des libs et include, à la compilation du moindre bout de code, alors que l'auto-complétion était bonne et me trouvait mes méthodes, j'obtenais la même erreur "undefined reference to `vtkDICOMImageReader::New()", "undefined reference to `vtkDICOMImageReader::GetHeight()'", etc... En regardant dans mes répertoires créés par la construction du projet "INSTALL" avec Visual, j'avais bien les .lib dans le dossier lib, mais uniquement les .h dans le dossier include, aucune .dll.
Je suis reparti à l'étape CMake, et j'ai changé quelques paramètres :
- J'ai choisi le type de génération "MinGW Makefile" en spécifiant le compilateur gcc du répertoire de MinGW\bin de Qt.
- J'ai coché "BUILD_SHARED_LIBS"
- J'ai décoché "CMAKE_USE_PTHREADS"
- J'ai coché "VTK_USE_QT" et "VTK_USE_QVTK_QTOPENGL"
- Et j'ai décoché "VTK_USE_INFOVIS" et "VTK_USE_GEOVIS"
La génération se passe, j'utilise alors le Command Prompt fourni par Qt, et dans le répertoire de destination de la génération de CMake, je lance "mingw32-make". Commence alors la construction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| d:\vtk_mingw\VTK_build>mingw32-make
Scanning dependencies of target vtksysEncodeExecutable
[ 0%] Building C object Utilities/kwsys/CMakeFiles/vtksysEncodeExecutable.dir/EncodeExecutable.obj
Linking C executable ..\..\bin\vtksysEncodeExecutable.exe
[ 0%] Built target vtksysEncodeExecutable
Scanning dependencies of target vtksysProcessFwd9x
[ 0%] Building C object Utilities/kwsys/CMakeFiles/vtksysProcessFwd9x.dir/ProcessFwd9x.obj
Linking C executable ..\..\bin\vtksysProcessFwd9x.exe
[ 0%] Built target vtksysProcessFwd9x
[ 0%] Generating vtksysProcessFwd9xEnc.c
Scanning dependencies of target vtksys
[ 0%] Building C object Utilities/kwsys/CMakeFiles/vtksys.dir/ProcessWin32.obj
[ 0%] Building C object Utilities/kwsys/CMakeFiles/vtksys.dir/vtksysProcessFwd9
xEnc.obj
[ 0%] Building C object Utilities/kwsys/CMakeFiles/vtksys.dir/Base64.obj
[ 0%] Building C object Utilities/kwsys/CMakeFiles/vtksys.dir/MD5.obj
[ 0%] Building C object Utilities/kwsys/CMakeFiles/vtksys.dir/System.obj
[ 0%] Building CXX object Utilities/kwsys/CMakeFiles/vtksys.dir/Directory.obj
[ 0%] Building CXX object Utilities/kwsys/CMakeFiles/vtksys.dir/DynamicLoader.obj
[ 0%] Building CXX object Utilities/kwsys/CMakeFiles/vtksys.dir/Glob.obj
[ 0%] Building CXX object Utilities/kwsys/CMakeFiles/vtksys.dir/RegularExpression.obj
[ 0%] Building CXX object Utilities/kwsys/CMakeFiles/vtksys.dir/SystemTools.obj
In file included from D:\vtk_mingw\VTK_src\Utilities\kwsys\SystemTools.cxx:19:
D:\vtk_mingw\VTK_build\Utilities/vtksys/ios/sstream: In member function 'void vtksys_ios::istringstream::clear(int)':
D:\vtk_mingw\VTK_build\Utilities/vtksys/ios/sstream:176: error: invalid conversion from 'int' to 'std::_Ios_Iostate'
D:\vtk_mingw\VTK_build\Utilities/vtksys/ios/sstream:176: error: initializing argument 1 of 'void std::basic_ios<_CharT, _Traits>::clear(std::_Ios_Iostate) [with _CharT = char, _Traits = std::char_traits<char>]'
D:\vtk_mingw\VTK_src\Utilities\kwsys\SystemTools.cxx: In static member function
'static bool vtksys::SystemTools::WriteRegistryValue(const char*, const char*, vtksys::SystemTools::KeyWOW64)':
D:\vtk_mingw\VTK_src\Utilities\kwsys\SystemTools.cxx:740: warning: deprecated conversion from string constant to 'CHAR*'
mingw32-make[2]: *** [Utilities/kwsys/CMakeFiles/vtksys.dir/SystemTools.obj] Error 1
mingw32-make[1]: *** [Utilities/kwsys/CMakeFiles/vtksys.dir/all] Error 2
mingw32-make: *** [all] Error 2 |
Quand j'ai vu la construction se lancer, je me suis dit "ouf, enfin !" et finalement non... A mon avis, le problème vient de CMake mais je n'ai plus d'idée sur les modifications à y faire pour que la construction passe ensuite. : (
Merci de m'avoir lu en tout cas, ainsi que pour d'éventuelles pistes/solutions/soutiens/aspirines !