[vtkusers] [Gdcm2] How to use vtk and gdcm in Visual Studio 2008

John Drescher drescherjm at gmail.com
Sun Jun 19 09:58:00 EDT 2011


On Sun, Jun 19, 2011 at 9:57 AM, Jafari, Kourosh <kjafari at rad.hfh.edu> wrote:
> Thank you both for your great comments! Let's first try John's approach. I changed the CMakeLists.txt file and got the following compilation error:
>
> 1>------ Build started: Project: TestGDCM, Configuration: Release Win32 ------
> 1>Linking...
> 1>LINK : fatal error LNK1181: cannot open input file 'gdcmMSFF.lib'
> 1>Build log was saved at "file://c:\Users\Kourosh\Research\Softwares\Toolkit\MyCodes\TestGDCM\TestGDCM.dir\Release\BuildLog.htm"
> 1>TestGDCM - 1 error(s), 0 warning(s)
> 2>------ Skipped Build: Project: ALL_BUILD, Configuration: Release Win32 ------
> 2>Project not selected to build for this solution configuration
> ========== Build: 0 succeeded, 1 failed, 1 up-to-date, 1 skipped ==========
>
> I thought this might help solving the problem: When using CMake for gdcm, I had turned the following options on:
>
> GDCM_BUILD_APPLIACTIONS
> GDCM_BUILD_EXAMPLES
> GDCM_BUILD_SHARED_LIBS
> GDCM_BUILD_USE_VTK
>
> Any idea what is wrong?

That is what I use.

>
> Thanks a lot!
> Kourosh
>
> ________________________________________
> From: Mark Roden [mmroden at gmail.com]
> Sent: Saturday, June 18, 2011 11:45 PM
> To: Jafari, Kourosh
> Cc: John Drescher; VTK; gdcm-developers
> Subject: Re: [Gdcm2] How to use vtk and gdcm in Visual Studio 2008
>
> Hi Kourosh,
>
> I use these two libraries together with visual studio.  I prefer to
> avoid mixing cmake with visual studio, because their paradigms are
> very different-- so my approach is different from John's because I'm
> avoiding cmake for my projects.
>
> When you build gdcm, you have to have already built vtk.  If you have,
> then search your cmake options for 'vtk' and turn that on.  The gdcm
> cmake should automatically find the most recently cmade vtk version
> and use that.  If you need two versions (one that's 32 bits and on
> that's 64), you'll need to build vtk twice, and then build gdcm twice,
> each time pointing to different versions of the appropriate vtk
> library.
>
> My directories look like:
>
> VTK (source from git)
> VTK-build-32 (32 bit compiled cmake result directory)
> VTK-instal-32 (32 bit install directory)
>
> CMake has an outstanding issue that will not be fixed, and that is
> that the default installation directory doesn't work on modern
> versions of windows unless you're running as administrator.  So, you
> should change the installation directory to be something near the
> build directory.  In there, you'll get bin, lib, and include
> directories.  This structure is mimicked for gdcm.
>
> Once you've 'installed' to those directories, just point visual
> studio's includes to the include directories, the linker to the lib
> directory, and copy the dlls from the bin directory into your binary
> directory either by hand or through a post-build step. To me, this
> approach is simpler than the CMakeFiles.txt approach.
>
> Good luck,
> Mark
>
> On Sat, Jun 18, 2011 at 1:14 PM, John Drescher <drescherjm at gmail.com> wrote:
>> On Sat, Jun 18, 2011 at 3:42 PM, Jafari, Kourosh <kjafari at rad.hfh.edu> wrote:
>>> Dear vtk users,
>>>
>>> I am trying to use vtk and gdcm together in Visual Studio 2008. I already had vtk 5.6.0. I downloaded and built gdcm 2.0.17 using CMake and Visual Studio 2008. It built gdcm with 20 errors. For example:
>>>
>>>
>>> 13>gdcmJPEG2000Codec.obj : error LNK2019: unresolved external symbol __imp__gdcmopenjpeg_opj_stream_set_seek_function at 8 referenced in function "void * * __stdcall gdcm::opj_stream_create_memory_stream(struct gdcm::myfile *,unsigned int,bool)" (?opj_stream_create_memory_stream at gdcm@@
>>>
>>>
>>> Now I have generated a simple project using the following CMakeLists.txt:
>>>
>>> cmake_minimum_required(VERSION 2.8)
>>> PROJECT(TestGDCM)
>>> FIND_PACKAGE(VTK REQUIRED)
>>> INCLUDE(${VTK_USE_FILE})
>>> FIND_PACKAGE(GDCM)
>>> IF(GDCM_FOUND)
>>>    INCLUDE(${GDCM_USE_FILE})
>>> ENDIF(GDCM_FOUND)
>>> INCLUDE_DIRECTORIES (
>>>  ${VTK_INCLUDE_DIR}
>>>  ${CMAKE_CURRENT_BINARY_DIR}
>>>  ${CMAKE_CURRENT_SOURCE_DIR}
>>>  )
>>> LINK_LIBRARIES (
>>>  vtkCommon
>>>  vtkRendering
>>>  vtkIO
>>>  vtkFiltering
>>>  vtkGraphics
>>>  vtkWidgets
>>>  vtkImaging
>>>  vtkHybrid
>>>  vtkCharts
>>>  vtkVolumeRendering
>>>  )
>>> ADD_EXECUTABLE(TestGDCM TestGDCM.cxx)
>>> TARGET_LINK_LIBRARIES(TestGDCM)
>>>
>>> I get the following compilation errors:
>>>
>>
>> Move all lines from LINK_LIBRARIES to TARGET_LINK_LIBRARIES. Also add
>> the following two lines to TARGET_LINK_LIBRARIES
>>
>> So your CMakeLists.txt should look like this:
>>
>> cmake_minimum_required(VERSION 2.8)
>> PROJECT(TestGDCM)
>> FIND_PACKAGE(VTK REQUIRED)
>> INCLUDE(${VTK_USE_FILE})
>> FIND_PACKAGE(GDCM)
>> IF(GDCM_FOUND)
>>   INCLUDE(${GDCM_USE_FILE})
>> ENDIF(GDCM_FOUND)
>> INCLUDE_DIRECTORIES (
>>  ${VTK_INCLUDE_DIR}
>>  ${CMAKE_CURRENT_BINARY_DIR}
>>  ${CMAKE_CURRENT_SOURCE_DIR}
>>  )
>>
>> ADD_EXECUTABLE(TestGDCM TestGDCM.cxx)
>> TARGET_LINK_LIBRARIES(TestGDCM
>>  gdcmMSFF
>>  vtkgdcm
>>  vtkCommon
>>  vtkRendering
>>  vtkIO
>>  vtkFiltering
>>  vtkGraphics
>>  vtkWidgets
>>  vtkImaging
>>  vtkHybrid
>>  vtkCharts
>>  vtkVolumeRendering
>>  )
>>
>> John
>>
>> ------------------------------------------------------------------------------
>> EditLive Enterprise is the world's most technically advanced content
>> authoring tool. Experience the power of Track Changes, Inline Image
>> Editing and ensure content is compliant with Accessibility Checking.
>> http://p.sf.net/sfu/ephox-dev2dev
>> _______________________________________________
>> Gdcm-developers mailing list
>> Gdcm-developers at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gdcm-developers
>>



-- 
John M. Drescher



More information about the vtkusers mailing list