开发环境: Visual Studio 2010
VTK版本: vtk-5.10.1
按照参考资料[2]59页的SDI编程实例来操作的时候,添加头文件vtkCallbackCommand.h时,编译出现了一下错误。
图1
又是一个源码级的错误。难道vtk-5.10.1的源码有误?不太愿意去相信这个,后来在网上看到了一片文章(参考资料[1]),发现所遇到的问题极为相似,因此猜测是MFC调试版本中定义预处理器扩展宏和vtk中的宏的冲突问题。
在整个解决方案中查找“DEBUG_NEW”,结果如图2所示,将MFC_SDI_VTKView.cpp中的#define new DEBUG_NEW注释掉即可(由于vtkCallbackCommand.h的添加位置就在这个文件中的#define new DEBUG_NEW下面)。又或者将vtkCallbackCommand.h移到#define new DEBUG_NEW上面即可!如图3所示。(这个最好!)
图2
图3
图3
参考资料
[1]PRB: Microsoft 基础类 DEBUG_NEW 并不适用于 GDI+
[2]三维图像编程. 周振环 等著. 电子工业出版社