[vtkusers] unable to run example/tutorial code Cone.cxx
eric lamar
ec_lamar at yahoo.com
Thu Apr 23 16:44:18 EDT 2015
Dan:
Thanks for the pointer - however, my need is a little different. I am making a library that uses VTK. I need to be able to compile this library directly - I need to see on the command line all of the arguments to the compile. When I compile the first program, titled "Hello World" (http://www.vtk.org/Wiki/VTK/Examples/Cxx/Rendering/Cylinder):
g++ -g -O0 Cylinder.cxx -I ~/VTK/include/vtk-6.2 -L ~/VTK/lib -lvtkFiltersSources-6.2 -lvtkRenderingOpenGL-6.2 -lvtkRenderingCore-6.2 -lvtkCommonExecutionModel-6.2 -lvtkCommonCore-6.2
The program compiles without errors or warnings. However, I get the same segmentation fault with a null pointer when I run the program. I've also linked against all 117 libraries (rather than just the 5 listed above) without any difference. Note that when I compile with the default 'Makefile', it works. I've examined the 'Makefile's that cmake produces to see what it does differently, but I just don't understand what I'm seeing in the 'Makefile's. What is done differently in the 'Makefile's that I'm not doing on the command line?
Thank you,Eric.
From: Dan Lipsa <dan.lipsa at kitware.com>
To: eric lamar <ec_lamar at yahoo.com>
Cc: "vtkusers at vtk.org" <vtkusers at vtk.org>
Sent: Thursday, April 23, 2015 12:22 PM
Subject: Re: [vtkusers] unable to run example/tutorial code Cone.cxx
Try using an example and the cmake file from
http://www.vtk.org/Wiki/VTK/Examples/Cxx
Dan
On Thu, Apr 23, 2015 at 3:14 PM, eric lamar via vtkusers <vtkusers at vtk.org> wrote:
Hello!
I am attempting to run VTK 6.2's example/tutorial code Cone.cxx. It compiles, however I get a segmentation fault.
My environment: iMac i7 quad coe, oS X 10.10, VTK 6.2
-------------The listing:-------------
/*=========================================================================
Program: Visualization Toolkit Module: Cone.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information.
=========================================================================*///// This example creates a polygonal model of a cone, and then renders it to// the screen. It will rotate the cone 360 degrees and then exit. The basic// setup of source -> mapper -> actor -> renderer -> renderwindow is// typical of most VTK programs.//
// First include the required header files for the VTK classes we are using.#include "vtkConeSource.h"#include "vtkPolyDataMapper.h"#include "vtkRenderWindow.h"#include "vtkCamera.h"#include "vtkActor.h"#include "vtkRenderer.h"
int main(){ // // Next we create an instance of vtkConeSource and set some of its // properties. The instance of vtkConeSource "cone" is part of a // visualization pipeline (it is a source process object); it produces data // (output type is vtkPolyData) which other filters may process. // vtkConeSource *cone = vtkConeSource::New(); cone->SetHeight( 3.0 ); cone->SetRadius( 1.0 ); cone->SetResolution( 10 );
// // In this example we terminate the pipeline with a mapper process object. // (Intermediate filters such as vtkShrinkPolyData could be inserted in // between the source and the mapper.) We create an instance of // vtkPolyDataMapper to map the polygonal data into graphics primitives. We // connect the output of the cone souece to the input of this mapper. // vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInputConnection( cone->GetOutputPort() );
// // Create an actor to represent the cone. The actor orchestrates rendering // of the mapper's graphics primitives. An actor also refers to properties // via a vtkProperty instance, and includes an internal transformation // matrix. We set this actor's mapper to be coneMapper which we created // above. // vtkActor *coneActor = vtkActor::New(); coneActor->SetMapper( coneMapper );
// // Create the Renderer and assign actors to it. A renderer is like a // viewport. It is part or all of a window on the screen and it is // responsible for drawing the actors it has. We also set the background // color here. // vtkRenderer *ren1= vtkRenderer::New(); ren1->AddActor( coneActor ); ren1->SetBackground( 0.1, 0.2, 0.4 );
// // Finally we create the render window which will show up on the screen. // We put our renderer into the render window using AddRenderer. We also // set the size to be 300 pixels by 300. // vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer( ren1 ); renWin->SetSize( 300, 300 );
// // Now we loop over 360 degreeees and render the cone each time. // int i; for (i = 0; i < 360; ++i) { // render the image renWin->Render(); // rotate the active camera by one degree ren1->GetActiveCamera()->Azimuth( 1 ); }
// // Free up any objects we created. All instances in VTK are deleted by // using the Delete() method. // cone->Delete(); coneMapper->Delete(); coneActor->Delete(); ren1->Delete(); renWin->Delete();
return 0;}
-------------I compile it:-------------g++ -g -O0 Cone.cxx -I /Users/Eric/VTK/include/vtk-6.2/ -L /Users/Eric/VTK/lib -lvtkFiltersSources-6.2 -lvtkRenderingOpenGL-6.2 -lvtkRenderingCore-6.2 -lvtkCommonExecutionModel-6.2
------------And run it:------------./a.outGeneric Warning: In /Users/Eric/Work/VTK-6.2.0/Rendering/Core/vtkPolyDataMapper.cxx, line 28Error: no override found for 'vtkPolyDataMapper'.
Segmentation fault: 11
---------------And debug it:---------------lldb a.out(lldb) target create "a.out"Current executable set to 'a.out' (x86_64).(lldb) runProcess 64007 launched: '/Users/Eric/Work/VTK-6.2.0/Examples/Tutorial/Step1/Cxx/a.out' (x86_64)Generic Warning: In /Users/Eric/Work/VTK-6.2.0/Rendering/Core/vtkPolyDataMapper.cxx, line 28Error: no override found for 'vtkPolyDataMapper'.
Process 64007 stopped* thread #1: tid = 0x42e799, 0x0000000100000d3e a.out`main + 142 at Cone.cxx:51, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0) frame #0: 0x0000000100000d3e a.out`main + 142 at Cone.cxx:51 48 // connect the output of the cone souece to the input of this mapper. 49 // 50 vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();-> 51 coneMapper->SetInputConnection( cone->GetOutputPort() ); 52 53 // 54 // Create an actor to represent the cone. The actor orchestrates rendering(lldb) p coneMapper(vtkPolyDataMapper *) $0 = 0x0000000000000000(lldb)
-----------So, why does the code complain about "no override found ..."? Why does the 'codeMapper' get assigned NULL? What am I missing? What do I need to change?
Thank you,Eric.
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
Search the list archives at: http://markmail.org/search/?q=vtkusers
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20150423/32a1c58e/attachment.html>
More information about the vtkusers
mailing list