Add VTK library to Qt project
-
Hi,
The VTK dlls are likely not found at run time.
Go to the Run part of the Project panel and modify the PATH environment variable so that it also contains the folder where the VTK dlls can be found.
-
@SGaist thank you for response
As I understood I added path var as in the picture:
When I launch the app I get an error:
and my main.cpp looks like in the example VTK_example with 2 include added #include "mainwindow.h" #include <QApplication>:#include "mainwindow.h" #include <QApplication> #include <vtkActor.h> #include <vtkCamera.h> #include <vtkCylinderSource.h> #include <vtkNamedColors.h> #include <vtkPolyDataMapper.h> #include <vtkProperty.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkRenderer.h> #include <vtkSmartPointer.h> #include <array> int main(int, char *[]) { vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New(); // Set the background color. std::array<unsigned char, 4> bkg{{26, 51, 102, 255}}; colors->SetColor("BkgColor", bkg.data()); // This creates a polygonal cylinder model with eight circumferential facets // (i.e, in practice an octagonal prism). vtkSmartPointer<vtkCylinderSource> cylinder = vtkSmartPointer<vtkCylinderSource>::New(); cylinder->SetResolution(8); // The mapper is responsible for pushing the geometry into the graphics // library. It may also do color mapping, if scalars or other attributes are // defined. vtkSmartPointer<vtkPolyDataMapper> cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New(); cylinderMapper->SetInputConnection(cylinder->GetOutputPort()); // The actor is a grouping mechanism: besides the geometry (mapper), it // also has a property, transformation matrix, and/or texture map. // Here we set its color and rotate it around the X and Y axes. vtkSmartPointer<vtkActor> cylinderActor = vtkSmartPointer<vtkActor>::New(); cylinderActor->SetMapper(cylinderMapper); cylinderActor->GetProperty()->SetColor( colors->GetColor4d("Tomato").GetData()); cylinderActor->RotateX(30.0); cylinderActor->RotateY(-45.0); // The renderer generates the image // which is then displayed on the render window. // It can be thought of as a scene to which the actor is added vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->AddActor(cylinderActor); renderer->SetBackground(colors->GetColor3d("BkgColor").GetData()); // Zoom in a little by accessing the camera and invoking its "Zoom" method. renderer->ResetCamera(); renderer->GetActiveCamera()->Zoom(1.5); // The render window is the actual GUI window // that appears on the computer screen vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->SetSize(300, 300); renderWindow->AddRenderer(renderer); renderWindow->SetWindowName("Cylinder"); // The render window interactor captures mouse events // and will perform appropriate camera or actor manipulation // depending on the nature of the events. vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); renderWindowInteractor->SetRenderWindow(renderWindow); // This starts the event loop and as a side effect causes an initial render. renderWindow->Render(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }
Here is one thing that the path showed in ERROR is the folder where VTK was downloaded. I mean here is VTK downloaded:
D:\Qt\Downloaded\VTK-8.2.0
and here it is installed:
C:\apps\MSVC_apps_release\VTK
The error complains on the download path. Is that ok? -
It's PATH, all in capital.
-
This post is deleted!
-
@SGaist I have PATH variable only if I check on "Purely system environment" and in this case after I add path to the VTK/bin (C:\apps\MSVC_apps_release\VTK\bin) folder then I get an error:
:-1: error: cannot open C:\Windows\main.obj.7068.0.jom for write
And it doesn't matter whether I add path to the VTK/bin or not. In "Purely system environment" mode my app gives the same error :( -
That looks like a build problem because it tries to write file somewhere it should not.
Did you do that in the Run part only ?
-
@SGaist Seems to me that partially problem was solved.
I added to the main file:#include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle);
I found it here link_1 and here link_2. I can run it only if both PATH and Path variables include path to VTK/bin and "Pure system environment" is checked off.
Here is the result:
As you can see I get some error and warning. What do you think of this?
Here is full error:
ERROR: In D:\Qt\Downloaded\VTK-8.2.0\Rendering\OpenGL2\vtkWin32OpenGLRenderWindow.cxx, line 734
vtkWin32OpenGLRenderWindow (000000000016F1C0): We have determined that your graphics system is an Intel SandyBridge based system. These systems only partially support VTK. If you encounter any issues please make sure your graphics drivers from Intel are up to date. -
@SGaist I use laptop and I have two videocards: Intel (native) and Nvidia (external). The error appears only when I run the app with native Intel videocard. If I run it with Nvidia then there is no error. So I think the question is solved. Thank you one more time :)
-
@SGaist I'm sorry for disturbing you but don't you know why some of VTK examples work and other doesn't?
For example I can run ex1(works) and ex2(works) but I can't launch ex3(not_work)
The output from my app is:
03:02:26: Strart C:\Users\Tasik\Documents\Qt_prj\build-untitled-Desktop_Qt_5_12_5_MSVC2017_64bit-Release\release\untitled.exe ...
03:02:26: Application unexpectly stopped.
03:02:26: The process was forced to stop.
03:02:26: C:/Users/Tasik/Documents/Qt_prj/build-untitled-Desktop_Qt_5_12_5_MSVC2017_64bit-Release/release/untitled.exe crashed. -
Do you have the same issue in Debug mode ?
-
In that case, run your application using the debugger. It will allow you to gather more information on what is going on.
-
@SGaist I can't put a "break point" beacause in this case I get the error: "cdb stopped".
If I just run app in debug mode I get the application output:04:05:17: C: \ Users \ Tasik \ Documents \ Qt_prj \ build-VTK-Desktop_Qt_5_12_5_MSVC2017_64bit-Debug \ debug \ VTK.exe starts ... 04:05:17: The program ended unexpectedly. 04:05:17: The process was completed forcibly. 04:05:17: C: /Users/Tasik/Documents/Qt_prj/build-VTK-Desktop_Qt_5_12_5_MSVC2017_64bit-Debug/debug/VTK.exe failed.
and compiler output:
04:05:17: Steps are being carried out for the VTK project ... 04:05:17: Settings have not changed, the qmake stage is skipped. 04:05:17: It starts: "C: \ Qt \ Tools \ qtcreator-4.10.2 \ bin \ jom.exe" C: \ Qt \ Tools \ qtcreator-4.10.2 \ bin \ jom.exe -f Makefile.Debug 04:05:17: The process "C: \ Qt \ Tools \ qtcreator-4.10.2 \ bin \ jom.exe" completed successfully. 04:05:17: Elapsed time: 00:00.
-
How did you install the debugger ?
-
@Please_Help_me_D said in Add VTK library to Qt project:
Isn'it?
No, the debugger in Visual Studio can't be used outside of Visual Studio.
You need to install Debugging Tools for Windows/CDB.
See https://doc.qt.io/qtcreator/creator-debugger-engines.html -
@jsulm thank you
My debugger is in folder: C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
Then I don't know how it was installed. It was already installed by the time when I installed Qt. Should I install some new debugger?
By the way in most application I can set a breakpoint and work with debugger. But in this case it doesn't work. -
I set up CDB path as it said in link text but still doesn't work.
Am I right that if my CDB installed properly then it should run my app and if some problem occurs then an error should appear that more detailed describes my problem? -
Did you check that your debugger is for the right architecture ?