[vtkusers] 3DConnexion, regression with VTK6 (was: Build error with 3d Connexion device)

Benoit Rosa benoit.rosa at kuleuven.be
Mon Jul 20 05:11:25 EDT 2015

Hi all,

Following up on the previously reported problem, I just tried to build 
everything with VTK 5 (VTK 5.10.1 tarball source available on the VTK 
downloads page). The result is that it works perfectly.

I checked again, and in VTK6 the cmake does not make use of the 
VTK_TDX_INCLUDE_PATH and VTK_TDX_OBJECT_PATH variables, and as such does 
not find the 3DConnexion library at link, even if it is inside the 
LD_LIBRARY_PATH. The problem is the same with the 6.1 and 6.2 tarballs 
from the website, as well as with a fresh checkout from the git 
repository. I always get a lot of "undefined reference to MagellanX" 
errors while building :  http://pastebin.com/MstU9PbN

It seems like a regression to me, since I can't build any VTK 6 version 
with TDx support. I had a look at the source files that VTK6 can't build 
with TDx support, and they are mostly similar to VTK5 implementations, 
so I don't think any problem comes from there. It really looks like 
there is a problem in the build process that has been introduced with VTK6.

I will now forward the following of the discussion to the vtk-developers 
mailing list, I just posted it on the users list as a pointer, in case 
somebody encounters the same problem as I do.


On 17/07/15 19:00, Benoit Rosa wrote:
> Hi all,
> I try to make a 3DConnexion space navigator work with VTK+Qt on Linux. 
> I Basically followed the steps given here : 
> http://www.vtk.org/Wiki/VTK/3DConnexion_Devices_Support (by the way, 
> the link to the CMakeLists.txt file is wrong).
> I use VTK 6.2 (also tried with version 6.3) and Qt 5, on ubuntu 12.04 
> with cmake.
> I will make a long post (sorry) explaining all the different hassles 
> that I had, because there are many. I tried to look a lot on the 
> internet for possible resolution, but without much luck.
> Everything goes fine on the driver side, I can run examples and 
> happily see the cube moving on the screen. Installation of the SDK 
> goes well, and I can also run xapp without any problem.
> Hassle begins with the Cmake. I can run ccmake and turn on the 
> VTK_USE_TDx to ON, but have no variable named VTK_TDX_INCLUDE_PATH or 
> VTK_TDX_OBJECT_PATH. WHen I try to run directly cmake and define those 
> variables, cmake fires a warning saying that they are not used by the 
> project.
> Anyway, configuration goes through so let's try to build ... And here 
> comes a lot of "Undefined reference to MagellanX" errors. I managed to 
> go through those by editing 
> Rendering/OpenGL/CMakeFiles/vtkRenderingOpenGL.dir/link.txt and adding 
> -lxdrvlib to the linker dependencies, but this is getting nasty 
> already ... But fixing the link, we can go further.
> Now at link of ../../lib/libvtkGUISupportQt-6.2.so, I get the following :
> CMakeFiles/vtkGUISupportQt.dir/QVTKApplication.cxx.o: In function 
> `QVTKApplication::setDevice(vtkTDxDevice*)':
> [home]/VTK-6.2.0/GUISupport/Qt/QVTKApplication.cxx:58: undefined 
> reference to `QVTKApplication::CreateDevice(vtkTDxDevice*)'
> This error is particularly weird, since CreateDevice is a signal 
> defined in QVTKApplication.h, I don't really get why it appears. 
> Moreover, the QObject::connect on line 28 of the same file connects 
> SIGNAL(CreateDevice(vtkTDxDevice *) , so the undefined reference error 
> should already fire at that moment ?
> If anybody has some clues for my problem, that would be great. I tried 
> to hack in here and there, and I manage to get the thing finally 
> compiling, but get then runtime errors about missing slot 
> QVTKApplication::setDevice, so I guess I should compile correctly 
> without hacking in before continuing.
> Thanks for your help !
> Benoit

Benoit Rosa,  Postdoctoral researcher, PhD

KU Leuven, Department of Mechanical Engineering, division PMA
Celestijnenlaan 300, box 2420
3001 Leuven

Email :benoit.rosa at kuleuven.be
Phone : +32 16 37 79 00

More information about the vtkusers mailing list