VS2010导入VTK库,总是有某些类调用::NEW()以后地址为0x000000

this->ren1 = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(ren1);

我使用的是VTK6.0.0,语言使用C++
比如这段代码,2次New的地址都是0x000000。
问题1,new出0x000000是为什么呢?编译的时候并不报错。
问题2,如果我把这个小程序写进VTK源码工程里,就不会出现问题,但是我自己新建工程,导入所有的头文件和lib,以及dll文件就出错,是不是因为库的问题呢?

该回答引用ChatGPT

问题1:new出0x000000是为什么呢?编译的时候并不报错。

答:这通常是因为在使用VTK的过程中没有初始化VTK的对象工厂。VTK的对象工厂是用来创建VTK对象的工厂类,如果没有初始化,则VTK将无法创建对象,从而返回空指针。在VTK中,如果您需要使用vtkObject的子类(例如vtkRenderer、vtkRenderWindow等),则应该使用vtkSmartPointer来管理对象的生命周期,而不是直接使用new和delete。这是因为vtkSmartPointer具有自动引用计数机制,可以确保对象被正确释放。


问题2:如果我把这个小程序写进VTK源码工程里,就不会出现问题,但是我自己新建工程,导入所有的头文件和lib,以及dll文件就出错,是不是因为库的问题呢?

答:可能是因为您在新建工程时没有正确设置链接器和包含文件的路径。请确保将包含文件和库文件的路径添加到项目属性中。此外,如果您使用的是VTK的动态链接库版本,则应该将dll文件复制到生成的可执行文件目录中,以便正确加载VTK库。