VS2012编译安装ITK-4.7.2_支持Qt5.2.1

    计算机系统:Win8.1(64 bit)

    ITK版本:4.7.2

    Cmake版本:3.1.0

    编译器:MSVC 2012(64 bit)

    Qt Creator:3.0.1(64 bit)

    Qt版本:5.2.1(64 bit)

1 目标

    使用VS2012编译ITK-4.7.2,使其能和VTK结合,并且支持python语言,并且能够在Qt开发环境中进行开发。

2 配置

    参考资料[2]对ITK的编译已经做了很好的说明,再此不赘言。这里仅仅贴出配置过程中主要的选项设置:

2.1 一般配置

BUILD_SHARED_LIBS		[ON]
BUILD_EXAMPLES			[ON]
BUILD_TEST				[ON]
CMAKE_INSTALL_PREFIX	[ITK的安装目录]
ITKV3_COMPATIBILITY		[ON]
Module_ITKVtkGlue		[ON]
VTK_DIR					[VTK库目录(例如E:/VTK/VTK-6.2.0_install/lib/cmake/vtk-6.2)]
Module_ITKReview		[ON]
    说明:如果不启动Module_ITKReview,则编译安装后不支持LabelGeometryImageFilter。

2.2 支持Python

ITK_WRAP_PYTHON			[ON]
ITK_LEGACY_SLIENT		[ON]

    说明:根据参考资料[2]的说明,支持Python时要开启ITK_WRAP_PYTHON选项。另外,在配置过程中提示要开启ITK_LEGACY_SLIENT选项。

    注意:开启Python支持有可能导致下面的编译失败,如果不是及其想要这个特性,建议去掉。

3 编译

    在编译的过程中,如果联网,则会下载一些文件,例如:

Performing download step (download, verify and extract) for 'GCC_XML'
1>  -- downloading...
1>       src='http://itk.org/files/gccxml/gccxml-2014-08-06.tar.bz2'
1>       dst='E:/ITK/InsightToolkit-4.7.2_build/Wrapping/Generators/GccXML/gccxml/src/gccxml-2014-08-06.tar.bz2'
    如果网络不通,将会出错:

1>CUSTOMBUILD : error : downloading 'http://itk.org/files/gccxml/gccxml-2014-08-06.tar.bz2'
1>    failed

    说明:1) 上述提示是开启了Python支持的情况,如果没有支持Python,是没有上述的下载过程的。

2) 如果开始了Python支持,本文的测试暂时是失败的,关闭Python支持,编译可以成功。

4 测试

    使用Visual Studio 2012创建一个简单的ITK工程,利用上面编译好的库进行测试可以成功。但是使用Qt Creator(配置的编译器是MSVC2012)创建ITK工程以进行测试时,提示错误:

itksys-4.7.lib(SystemTools.obj):-1: error: LNK2019: 无法解析的外部符号 __imp_RegCloseKey,该符号在函数 "public: static bool __cdecl itksys::SystemTools::GetRegistrySubKeys(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > &,enum itksys::SystemTools::KeyWOW64)" (?GetRegistrySubKeys@SystemTools@itksys@@SA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@4@W4KeyWOW64@12@@Z) 中被引用

4.1 错误原因

    根据参考资料[6][7]的提示,这是因为没有链接到advapi32.lib。其实,仔细看Cmake配置时发现,有个项目CMAKE_C_STANDARD_LIBRARIES,其内容为:

kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib

    当使用Visual Studio 2012对ITK项目进行编译时,会自动链接到上面的库,但是当使用Qt Creator时,情况不一样,需要手动指定上述的库名和路径。经过查找发现,上述的库文件都在目录C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64中。

4.2 解决方法

    经过测试发现,其实只要指定AdvAPI32.Libshell32.lib两个库及其目录就可以解决上述的问题,.pro的库配置如下:

INCLUDEPATH += E:/ITK/InsightToolkit-4.7.2_install/include/ITK-4.7

QMAKE_LIBDIR += E:/ITK/InsightToolkit-4.7.2_install/lib\
            C:/Program Files (x86)/Windows Kits/8.0/Lib/win8/um/x64

LIBS += shell32.lib\
        AdvAPI32.Lib

LIBS += ITKBiasCorrection-4.7.lib\
ITKBioCell-4.7.lib\
ITKCommon-4.7.lib\
ITKDeprecated-4.7.lib\
ITKDICOMParser-4.7.lib\
itkdouble-conversion-4.7.lib\
ITKEXPAT-4.7.lib\
ITKFEM-4.7.lib\
itkgdcmCommon-4.7.lib\
itkgdcmDICT-4.7.lib\
itkgdcmDSED-4.7.lib\
itkgdcmIOD-4.7.lib\
itkgdcmjpeg12-4.7.lib\
itkgdcmjpeg16-4.7.lib\
itkgdcmjpeg8-4.7.lib\
itkgdcmMSFF-4.7.lib\
ITKgiftiio-4.7.lib\
itkhdf5-4.7.lib\
itkhdf5_cpp-4.7.lib\
ITKIOBioRad-4.7.lib\
ITKIOBMP-4.7.lib\
ITKIOCSV-4.7.lib\
ITKIOGDCM-4.7.lib\
ITKIOGE-4.7.lib\
ITKIOGIPL-4.7.lib\
ITKIOHDF5-4.7.lib\
ITKIOImageBase-4.7.lib\
ITKIOIPL-4.7.lib\
ITKIOJPEG-4.7.lib\
ITKIOLSM-4.7.lib\
ITKIOMesh-4.7.lib\
ITKIOMeta-4.7.lib\
ITKIOMRC-4.7.lib\
ITKIONIFTI-4.7.lib\
ITKIONRRD-4.7.lib\
ITKIOPNG-4.7.lib\
ITKIOSiemens-4.7.lib\
ITKIOSpatialObjects-4.7.lib\
ITKIOStimulate-4.7.lib\
ITKIOTIFF-4.7.lib\
ITKIOTransformBase-4.7.lib\
ITKIOTransformHDF5-4.7.lib\
ITKIOTransformInsightLegacy-4.7.lib\
ITKIOTransformMatlab-4.7.lib\
ITKIOVTK-4.7.lib\
ITKIOXML-4.7.lib\
itkjpeg-4.7.lib\
ITKKLMRegionGrowing-4.7.lib\
ITKLabelMap-4.7.lib\
ITKMesh-4.7.lib\
ITKMetaIO-4.7.lib\
itkNetlibSlatec-4.7.lib\
ITKniftiio-4.7.lib\
ITKNrrdIO-4.7.lib\
itkopenjpeg-4.7.lib\
ITKOptimizers-4.7.lib\
ITKOptimizersv4-4.7.lib\
ITKPath-4.7.lib\
itkpng-4.7.lib\
ITKPolynomials-4.7.lib\
ITKQuadEdgeMesh-4.7.lib\
ITKSpatialObjects-4.7.lib\
ITKStatistics-4.7.lib\
itksys-4.7.lib\
itktiff-4.7.lib\
itkv3p_lsqr-4.7.lib\
itkv3p_netlib-4.7.lib\
itkvcl-4.7.lib\
ITKVideoCore-4.7.lib\
ITKVideoIO-4.7.lib\
itkvnl-4.7.lib\
ITKVNLInstantiation-4.7.lib\
itkvnl_algo-4.7.lib\
ITKVTK-4.7.lib\
ITKVtkGlue-4.7.lib\
ITKWatersheds-4.7.lib\
itkzlib-4.7.lib\
ITKznz-4.7.lib

5 总结

    对比《VS2012编译安装VTK-6.2.0_支持Qt5.2.1》可以发现,与VTK的配置不同的是,在使用CMake配置阶段,并没有专门针对Qt的配置。ITK关于Qt的支持,是不用经过特别配置的,只是在编译项目时,需要指定所依赖的系统库。

参考资料

[1]win7 64位下VS2010/VS2012 下安装 ITK/VTK(一)

[2]ITK在vs2010下安装、搭建

[3]ITK进行日志-2  

[4]ITK在VS2010中的安装和第一个例子

[5]ITK+VTK+Python的整合及例子程序

[6]VC2008编译问题,如何设置

[7]error: LNK1120: 5 unresolved externals

[8]__imp__CommandLineToArgvW

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OneSea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值