目 录
一 开发环境
(1)ITK-5.0.0
(2)VTK-8.2.0
(3)Visual Studio 2017
二 ITK错误整理
2.1
(1)问题:
ITK读写PNG、BMP、JPG等格式的图像失败。抛出异常如下:
“Could not create IO object for writing file xxx.png
There are no registered IO factories.”。
(2)解决方案:
若ITK读写png、bmp、jpg图像失败,则添加以下头文件:
// PNG对应
#include <itkPNGImageIOFactory.h>
// BMP对应
#include <itkBMPImageIOFactory.h>
// JPG对应
#include <itkJPEGImageIOFactory.h>
// mhd格式图像
// #include <itkMetaImageIOFactory.h>
在读写前使用:
itk::ObjectFactoryBase::RegisterFactory(itk::PNGImageIOFactory::New());
// 或itk::BMPImageIOFactory::New() // 或itk::JPGImageIOFactory::New()
注册。
2.2
(1)问题:
error LNK2019: 无法解析的外部符号 gethostname
error LNK2019: 无法解析的外部符号 WSAStartup
error LNK2019: 无法解析的外部符号 WSACleanup
(2)解决方案:
#pragma comment(lib, "WS2_32.lib")
2.3
(1)问题:
error LNK2019: 无法解析的外部符号 __imp_UuidCreate。
(2)解决方案:
#pragma comment(lib, "RpcRT4.lib")
2.4
(1)问题:
error LNK2019: 无法解析的外部符号 GetProcessMemoryInfo。
(2)解决方案:
#pragma comment(lib,"Psapi.lib")
三 VTK错误整理
3.1
(1)问题:OpenGL问题,提示找不到“gl”相关的函数
(2)解决方法:
#pragma comment(lib, "OpenGL32.lib")
#pragma comment(lib, "GLU32.lib")
3.2
(1)问题:程序崩溃,提示Error: no override found for 'vtkImageSliceMapper'。
具体崩溃代码段:
vtkSmartPointer<vtkImageViewer2> imageViewer = vtkSmartPointer<vtkImageViewer2>::New();
或者:
vtkSmartPointer<vtkImageViewer> imageViewer = vtkSmartPointer<vtkImageViewer>::New();
(2)解决方法:
添加
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
3.3
(1)问题:
error LNK2019: 无法解析的外部符号 __imp_SymGetLineFromAddr64
error LNK2019: 无法解析的外部符号 __imp_SymInitialize
error LNK2019: 无法解析的外部符号 __imp_SymFromAddr
(2)解决方案:
#pragma comment(lib, "DbgHelp.lib")
3.4
(1)问题:
error LNK2019: 无法解析的外部符号 "void __cdeclvtkRenderingOpenGL_AutoInit_Construct(void)"
error LNK2019: 无法解析的外部符号 "void __cdeclvtkRenderingOpenGL_AutoInit_Destruct(void)"
(2)解决方案:
添加头文件:
#include <vtkAutoInit.h>
同时修改
VTK_MODULE_INIT(vtkRenderingOpenGL)
为
VTK_MODULE_INIT(vtkRenderingOpenGL2)
编译后出现图像,但是有warning:
Warning: In E:\new\VTK\VTK-8.1.0\Rendering\Core\vtkInteractorStyleSwitchBase.cxx, line 43
vtkInteractorStyleSwitchBase (000001E3F4CDE540): Warning: Link to vtkInteractionStyle for default style selection.
解决办法是加入
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)
3.5
(1) 问题:
vtk使用vtkSmartVolumeMapper类,运行时报错:
Error: no overide found for 'vtkRayCastImageDisplayHelper'.
(2)解决方法:
加入:
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
总结:
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "dbghelp.lib")
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)